本篇文章将指导你如何使用 Travis-CI 自动部署 hexo 生成的静态博客到 github 上。

背景介绍

在最新的 github 中,如果想要你的 github repo 可以作为博客,需要命名为类似 zhaochunqi.github.io这样的。
在这里,我在此 repo 下建立了两个完全不同的分支,source 和 master 分支。

source 分支放置 hexo 的一些源文件,master 分支放置静态博客资源。

我们需要做的就是获取到 source 分支的改动,自动 deploy 到 master 分支

所以步骤就是: 获取改动 ->deploy

travis-CI

travis-CI(https://travis-ci.org/)是集成测试工具,目前只支持 github。

在 travis-CI 中对 zhaochunqi.github.io 开启自动构建,配置如下:

(建议开启 Build only if .travis.yml is prezent.)

配置 .travis.yml

获取 github 权限

两种方法

1. SSH
2. github token

这里采用的是 github token 的方法,(SSH 配置较为复杂)

点击头像 ->settings-> Personal access tokens 新建一个 token,会获取到一串字符 ,记录下下面需要用到。

将 token 配置到 travis-CI

安装 Travis-CI 命令行工具

1
gem install travis

登陆 Travis CI

需要输入 Github 账号和密码

1
travis login --auto

加密环境变量(token)

1
travis encrypt GH_OWNER=super_secret

此命令会写入加密后的环境变量到.travis.yml 中.

这样,使用 https://${GH_OAUTH_TOKEN}@github.com/${GH_OWNER}/${GH_PROJECT_NAME} 即可进行正常的 push 和 pull 了。

最后贴一下我的配置 [29 Nov 2016 更新了 cache,加快构建速度]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
language: node_js
sudo: false
node_js:
- "4.4.4"
# Travis-CI Caching
cache:
directories:
- node_modules
env:
global:
- GH_OWNER: zhaochunqi
- GH_PROJECT_NAME: zhaochunqi.github.io
branches:
only:
- source
# Build Lifecycle
install:
- npm install
script:
- git clone -b master https://${GH_OAUTH_TOKEN}@github.com/${GH_OWNER}/${GH_PROJECT_NAME} public
- hexo g
- git config --global user.name "zhaochunqi"
- git config --global user.email git@zhaochunqi.com
- cd public
- git add --all
- git commit -m "$(curl -s http://whatthecommit.com/ | awk '/<p>/ {sub("<p>",""); print }')"
- git remote set-url --add --push origin https://${GH_OAUTH_TOKEN}@github.com/${GH_OWNER}/${GH_PROJECT_NAME}
- git remote set-url --add --push origin https://${coding_account}:${coding_passwd}@git.coding.net/harchiko/harchiko.git
- git push -f origin master > /dev/null 2>&1

这里面除了 global 这里其他都不难懂,看一下 travis 的生命周期就全明白了。