使用 Travis CI 构建博客
今天看到有人因为 hexo 文件遗失 以前的文章全没有了 所以我准备在 Github 备份我的代码
基本思路
- 本地编写文章
- push 到 Github
- Travis CI 检测到代码变化
- Travis CI 构建代码环境,编译代码,生产博客文件,并自动部署

Travis CI
顾名思义,Travis CI 是一个持续集成 (Continuous integration,简称 CI) 的工具。它可以在公共的 Github 仓库上免费使用。
开启 Travis-ci
首先去 travis-ci 官网,点击右上角 Sign in with GitHub 通过 github 授权登录。然后去到个人信息页面,开启需要使用 travis 的项目关:

创建 SSH Key
创建一个部署在 Travis CI 上面的 SSH key 利用这个 SSH key 可以让 Travis CI 向我们自己的项目提交代码 (也就是将博客部署到 gh-page)。
$ ssh-keygen -t rsa -C "youremail@example.com" |
得到 id_rsa.pub 和 id_rsa,然后将有 pub 后缀的配置到 gh-page 的 Deploy key。

记得要将 Allow write access 的选项选上,这样 Travis CI 才能获得 push 代码的权限。
加密私钥
刚才讲公钥文件配置好了,然后就要配置私钥文件,在 hexo 项目下面建立一个.travis 的文件夹来放置需要配置的文件。
首先要安装 travis 命令行工具 (如果在国内的网络环境下建议安装之前先换源)。
$ gem install travis |
用命令行工具登录:
$ travis login --auto |
然后将刚刚生成的 id_rsa 复制到 .travis 文件夹,用命令行工具进行加密:
$ travis encrypt-file id_rsa --add |
这个时候会生成加密之后的秘钥文件 id_rsa.enc,原来的文件 id_rsa 就可以删掉了。
这时可以看到终端输出了一段
openssl aes-256-cbc -K $encrypted_xxxxxxxxxxx_key -iv $encrypted_xxxxxxxxxxx_iv |
这样格式的信息,这是 travis 用来解密 id_rsa.enc 的 key,先保存起来,后面配置 .travis.yml 会用到它。
为了让 git 默认连接 SSH 还要创建一个 ssh_config 文件。在.travis 文件夹下创建一个 ssh_config 文件,输入以下内容:
Host github.com |

可以看到刚刚 travis 命令行生成的解密 key
现在进入 travis CI 设置页面

顺便把上面的开关打开

这样,当向项目 push 代码的时候 travis CI 就会根据.travis.yml 的内容去部署我们的项目了。
####.travis.yml
最后就要配置.travis.yml。在项目的根目录创建.travis.yml 文件。
language: node_js |
后记
在部署了一遍之后发现,运行 npm install 安装 node 的库时候占据了部署的很大一部分时间,这里有一个技巧,可以将 node_modules 缓存起来,这样可以节省部署的时间。
# .travis.yml 配置 |
遇到 Authentication Failed
这是因为 hexo 根目录下的 _config.yml 中配置问题导致的:
把如下配置:
# Deployment |
修改为:
# Deployment |
问题即解决!
The Why·Liam·Blog by WhyLiam is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由WhyLiam创作并维护的Why·Liam·Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于Why·Liam·Blog (https://blog.naaln.com),版权所有,侵权必究。
本文永久链接:https://blog.naaln.com/2016/06/build-blog-with-travis/