使用 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)。
1 | $ 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 命令行工具(如果在国内的网络环境下建议安装之前先换源)。
1 | $ gem install travis |
用命令行工具登录:
1 | $ travis login --auto |
然后将刚刚生成的 id_rsa
复制到 .travis
文件夹,用命令行工具进行加密:
1 | $ travis encrypt-file id_rsa --add |
这个时候会生成加密之后的秘钥文件 id_rsa.enc
,原来的文件 id_rsa
就可以删掉了。
这时可以看到终端输出了一段
1 | 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 文件,输入以下内容:
1 | Host github.com |
可以看到刚刚 travis 命令行生成的解密 key
现在进入 travis CI 设置页面
顺便把上面的开关打开
这样,当向项目 push 代码的时候 travis CI 就会根据 .travis.yml 的内容去部署我们的项目了。
.travis.yml
最后就要配置 .travis.yml。在项目的根目录创建 .travis.yml 文件。
1 | language: node_js |
后记
在部署了一遍之后发现,运行 npm install
安装 node 的库时候占据了部署的很大一部分时间,这里有一个技巧,可以将 node_modules
缓存起来,这样可以节省部署的时间。
1 | # .travis.yml 配置 |
遇到Authentication failed
这是因为hexo 根目录下的 _config.yml中配置问题导致的:
把如下配置:
1 | # Deployment |
修改为:
1 | # 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/