发表新文章后,使用travis的ci功能进行自动初始化评论功能。

使用gitalk或者gitment做hexo静态博客的评论功能,有一个很烦的问题是每次发表后, 都需要去点一下初始化评论。

使用hexo博客push到github的后自动部署到github pages方法发表文章后, 我们同样可以使用travis的能力来进行自动初始化评论功能。

自动部署需要依赖sitemap.yml

部署

step 0 生成token

github setting页面申请Personal access tokens, 点击上面的Generate new token后,跳进去后,填好描述信息,同时勾上下面的选项: generate token 生成好把token复制出来,它只会显示一次。 token

step 1 编译自动初始化评论的工具

下载自动初始化评论的工具 wget https://github.com/tenfyzhong/autoissue/releases/download/v0.1.1/autoissue-linux-x86 -O autoissue

把autoissue移动到自己的博客bin目录下。

step 2 配置travis构建的配置

在自己的博客repo上执行 travis encrypt AUTH_TOKEN=xxxxxxxxx --add,它就会自动往.travis.yml上添加好这个环境变量。

travis的命令使用参照Encryption keys

.travis.yml配置的script上执行autoissue,完整的配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
language: node_js
cache:
directories:
- node_modules
install:
- nvm install 8.4.0
- nvm use 8.4.0
- node --version
- npm install -g npm@5.3.0
- npm install -g hexo-cli
- npm install
before_script:
- git submodule update --init --recursive
- git config user.name "tenfyzhong"
- git config user.email "tenfyzhong@qq.com"
- sed -i "s/https:\/\/\(github\.com\/tenfyzhong\/tenfyzhong\.github\.io\.git\)/https:\/\/$ACCESS_TOKEN@\1/" _config.yml
script:
- hexo clean
- hexo g
- hexo d
- ./bin/autoissue
env:
global:
secure: # 已经删除

step 3 配置评论使用的repo

需要在博客的_config.yml上添加以下的配置,对应于gitalk或者gitment的配置

1
2
3
4
5
owner: tenfyzhong
comment_repo: tenfyzhong.github.io # 对应于repo配置
labels: ["comment"]
sitemap:
path: sitemap.xml

修改完后就可以直接推一篇文章上去看效果了。

对于自动生成评论的规则

autoissue工具会去拉一页issue,把这页issue里最旧的文章做基准,从hexo生成的sitemap.xml中做对比, 对于存在于sitemap.xml中的文章,比基准文章新,而且又不存在这一页issue中,则进行创建。