用 Travis CI 自动部署Hexo博客到 GitHub (二)
上文简单介绍了一些基本的概念和我们的实现思路,思路明确后,具体操作也就不难理解了
准备 Dev repo 与 Pages repo
如果你已经在使用hexo博客,可以将master
分支作为Dev repo
, gh-pages
作为Pages repo
。建立Hexo博客的方法可以参照我的另一篇文章使用Hexo在Github上搭建你的博客
Deploy Key
生成ssh-key请参见官网教程:Generating an SSH key
这里我们假设生成的两个文件名为id_rsa.pub
和 id_rsa
,其中.pub
是公钥,我们需要将其添加到github上。
注意:这个 SSH key 不应成为你账号的全局 SSH key(因为这样 Travis CI 就获得了你所有代码库的提交权限,这是不严谨的),而应该添加至 https://github.com/username/username.github.io/settings/keys ,这样能更好的限制 Travis CI 的提交权限。即下图所示位置:
申请Travis CI
在https://travis-ci.org/,用github帐号登录,找到你的博客仓库,开启Travis CI服务,如下图:
在其中的设置页面作如下设置:
加密 Private Key
下面的操作需要 Ruby 和 gem 环境,Windows
下配置有很多问题,建议在Linux下
,下面以Ubuntu 14.04 LTS
为例来向大家介绍
安裝 Travis
1 | $ gem install travis |
这个时候你可能会发现好久没有响应,或者出现提示说连接错误。
这便是由于我们伟大的墙了,可以采用下面的方法解决
1 | $ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/ |
我们将gem包的镜像源换为国内的即可,然后再运行
1 | gem install travis |
命令行登录Travis CI
1 | $ travis login --auto |
会让你输入github帐号
如此一来,我们就能通过 Travis 提供的命令列工具加密刚刚所制作的 Private key,并把它上传到 Travis 上供日後使用。
建立文件
将一开始得到的id_rsa
文件复制到Dev repo
下,并建立.travis.yml
文件,内容暂时为空即可
加密私钥并上传至 Travis CI.
1 | $ travis encrypt-file id_rsa --add |
成功后会生成id_rsa.enc
文件,我们就可以将id_rsa
文件手动删除,保证安全,同时上述指令还会在.travis.yml
文件中插入解密指令:
`
- openssl aes-256-cbc -K $encrypted_xxxxxxxxxx_key -iv $encrypted_xxxxxxxxxx_iv
-in id_rsa.enc -out id_rsa -d
`
其中xxxxxxxxxx部分便是你的解密参数,不要去改动它
修改.travis.yml
文件
`
- openssl aes-256-cbc -K $encrypted_xxxxxxxxxx_key -iv $encrypted_xxxxxxxxxx_iv
-in id_rsa.enc -out ~/.ssh/id_rsa -d
`
建立ssh_config文件
内容为:
1 | Host github.com |
完善 Travis CI 的脚本文件 .travis.yml
下面对 .travis.yml 文件各块添加了注释。有几个地方必须要修改:
两处 xxxxxxxxxx 修改为你之前获得的解密参数;你的姓名 和 你的邮箱 与你 Github 上的信息保持一致。
同时附上本博客的 .travis.yml
源文件,以供参考:.travis.yml
1 | # 指定环境 |
Push 到 Dev repo
将改动push到Dev repo上,在https://travis-ci.org页面可以查看构建状态,
如果成功的话就能在自己的 pages 上查看刚生成的博客了;如构建失败,Travis CI 会显示出哪步脚本导致了构建失败,本地源里修改它,然后再次 push 即可。
后记
这样一来,我们以后写博客或者改配置,只需要push即可,Travis CI会帮助我们自动部署,是不是比较方便?
其实我感觉这样最大的好处重装系统之后不需要重新配置hexo环境了,直接clone到本地,就可以了。
如有问题欢迎在下面留言
或者直接联系我:Waydrow@163.com
我会在第一时间回复