Travis 是一个自动化集成测试工具,原本的用处主要是在提交代码之后进行自动化的编译和测试。但是其实你不光可以拿它来编译代码,还可以做任何你需要执行代码做的事情,就比如更新博客文章。
如果你的博客像我一样使用 Hexo / Jekyll / Octopress 等工具生成静态文件,并且发布在 GitHub Pages 上,那么你可以使用 Travis 来自动帮助你发布博客文章。
整个发布的流程如下图所示(图片来自这里),你只需要将本地的文章 PUSH 到 GitHub,GitHub 的 Web Hook 会通知到 Travis,之后 Travis 就会自动地从你的项目中获得博客文件,然后执行 Build 操作生成静态文件,然后再 PUSH 回你的博客仓库。
当然,为了做到这些自动化,你需要一点时间进行 Travis 和 项目的设置,以下是详细的设置说明。
授权 Travis
- 去 Travis 授权访问你的 Github。如果你的博客是开源的,那么你可以免费使用 Travis。
- 去 Github 的应用管理界面 设置 Travis 的访问权限。
- 去 Github 的 Token 管理界面,点击
Generate new token
按钮,生成一个OAuth Token
,权限可以都勾上。但是要注意,不要把这个 Token 的内容直接放到博客文件中。 - 去 Travis 页面,进入到你博客项目的设置里,在
Environment Variables
下,增加一个名为GITHUB_TOKEN
的环境变量,值为你刚刚生成的OAuth Token
值。为了方便调试,建议你勾选上DISPLAY VALUE IN BUILD LOG
。如下图所示:
修改项目
修改依赖为 submodule
将你依赖的主题,以 submodule 的方式添加到项目中,这样 Travis 会在 clone 你的主项目的时候,自动把 submodule 也 clone 下来。注意,因为 Travis 并不拥有你的 SSH 私钥,所以你需要用 https 的方式来下载代码。代码如下:
git submodule add -f https://github.com/tangqiaoboy/jacman.git |
请将上面的代码稍作修改,把主题换成你使用的主题项目地址。
创建 .travis.yml 文件
接着,在项目中创建一个 .travis.yml
的文件,内容如下:
sudo: false |
上面的文件针对的是我个人的博客,请你对上面的文件进行适当修改,将博客地址替换成你自己的。
修改 _config.yml
在 _config.yml
中增加 deploy 相关设置:
deploy: |
原理
完成了以上设置之后,每次你有 push 文件源文的时候,Travis 就会自动帮你 build 代码,生成博客文件,并且发布到 GitHub Pages 上。
以上这些修改主要起的作用是:通过在 .travis.yml
中调用 sed,修改 _config.yml
文件中的 repo 地址,将自己之前申请的 GITHUB_TOKEN
给替换上去,最后用它完成鉴权,把文章上传到你自己的仓库中。
如果你的博客是基于 Jekyll 的,那么可以在 这里 获得官方的发布教程。