0%

利用travis持续集成工具自动部署博客

简介

完善一下早期文章。虽然网上已有很多关于博客自动部署的教程,但是真正实践起来并不是一番丰顺。所以
将踩过的坑记录下来也是必要的。

自动部署方案选择

Webhook

Webhook,也就是人们常说的钩子,是一个很有用的工具。你可以通过定制 Webhook 来监测你在 Github
上的各种事件,包括提交合并分支等事件。并且github和gitlab对webhook的支持比较好。
主要思路就是当有新的 push 操作后,触发webhook的回调,进行仓库拉取更新和编译,并且将编译后的
文件推送到 git 仓库或者特定服务器上,就完成了自动部署。
但是此方案需要有一个服务器,所以暂时不考虑。

Travis CI

Travis CI 是目前新兴的开源持续集成构建项目。目前我的大多数的github项目都已经移入到Travis CI的构建队列中。

travis配置

  • 开启travis中要构建的项目,并指定触发条件。

配置
触发条件

  • 配置环境变量Environment Variables,主要目的是将HEXO_ALGOLIA_INDEXING_KEY(algolia的key)和TRAVIS_GITHUB(Github的Access Token)
    以私有方式配置到构建环境中。

  • 配置 .travis.yml 配置文件, 安装node,配置主题,hexo编译,自动配置algolia搜索字段的更新,将构建结果 push
    github 对应仓库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
language: node_js
node_js: node
cache:
directories:
- node_modules
before_install:
- npm install -g hexo-cli
install: npm install
script:
- git clone https://github.com/sakitam-fdd/hexo-theme-next.git themes/next
- hexo clean
- hexo generate
- export HEXO_ALGOLIA_INDEXING_KEY=${HEXO_ALGOLIA_INDEXING_KEY}
- hexo algolia
after_script:
- cd ./dist
- git init
- git config --global user.name 'sakitam-fdd'
- git config --global user.email 'smilefdd@gmail.com'
- git add .
- git commit -m "update my website"
- git push --force --quiet "https://${TRAVIS_GITHUB}@github.com/sakitam-fdd/sakitam-fdd.github.io" master:master

测试结果

推送一篇新主题到 website 仓库,观察 travis-ci构建过程
当出现 Done. Your build exited with 0.后表示构建并且更新blog成功,稍等一分钟可以刷新你的blog查看最新结果。

成功