use hexo with travis ci

2016-12-05 Meng Lei 更多博文 » 博客 » GitHub »

备忘 GIT 持续集成

原文链接 http://menglei.tk/2016/12/05/travis/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


Travis CI 简介

Travis CI是一个分步式的开源持续构建项目,只需要通过配置.travis.yml文件,即可将Github上的项目进行持续的编译、测试等工作,以便尽早发现错误,尽早改正,并减少人工的重复劳动。同时,也可以通过travis ci完成很多有趣的工作。

通过Travis CI自动发布hexo博客

我们建立的hexo博客,每次写完一篇,都要执行 hexo generatehexo deploy 等命令,将博客生成的HTML静态文件部署到Github的版本库上,同时,也会将源代码保存一份到Github的另一个分支,每次都要执行很多重复操作,在此,我们可以通过Travis CI来帮我们完成这些重复劳动。

为项目启用Travis CI功能

首先打开https://travis-ci.org并选择使用Github授权登陆,登陆成功之后,进入https://travis-ci.org/profile/,可以看到用户Github账户下的所有公开的版本库,如果没有显示,就点击右上角“Sync account”按钮,将项目列表同步过来,我们选择github page所在的版本库(本人的为:leim/leim.github.io),点击左侧的toggle button即可启用。

此时我们再回到Github的leim/leim.github.io版本库下,点击Settings->Integrations & services,即可看到Travis CI已经在列表中了,表明Travis CI功能已经成功启用。

Github Personal Access Token

在Github点击右上角头像,然后点击Settings,进入个人设置,点击Personal access token,然后点击Generate new token,我们需要生成一个具有push权限的access token,所以选择讲repo下的public_repo前面打勾,同时将此token备注为public_repo_deploy,表明其作用,确认之后牢记此token,因为它只会显示这一次,一旦忘记只能进行重置,无法找回。

配置Travis CI

再次回到Travis CI,可以看到列表中的leim\leim.github.io已经在那里了,我们点击右侧More options -> Settings,可以看到设置页面,有一些配置选项:

  • Build only if .travis.yml is present:表示只有在.travis.yml文件存在的分支发生变更才开始运行构建。
  • Build pushes:表示push事件可以触发构建。
  • Limit concurrent jobs:限制同时运行的构建数。
  • Build pull request:表示pull事件可以触发构建。
  • Environment Variables:配置所需的环境变量,主要是一些保密信息。
  • Cron Jobs:除了按照特定事件触发构建外,也可以根据设置定时触发构建任务。

我们讲上一步得到的 personal access token复制到 Environment Variables中,并命名为deploy_github_public_repo然后保存。

至此所有的设置工作全部完成。

编写.travis.yml文件

.travis.yml文件是Travis CI的所有动作的描述文件,当然我们也要将所需要做的工作写在该文件中。其主要内容如下:

language: node_js   //构建环境
node_js: stable     //版本

install:   //安装依赖
  - npm install hexo -g
  - npm install


script:   //执行脚本
  - hexo g

after_script:   //脚本执行成功之后,部署代码
  - cd ./public
  - git init
  - git config user.name "leim"
  - git config user.email "z@menglei.tk"
  - git add .
  - git commit -m "auto update docs by travis ci"
  //${deploy_github_public_repo}为设置在环境变量中的access token,此处通过https提交更改到master分支
  - git push --force --quiet "https://${deploy_github_public_repo}@github.com/leim/leim.github.io.git" master:master

branches:
  only:
    - hexo   //仅hexo分支触发该构建

到这一步,所有的工作就全部完成了,接下来,我们可以新建一篇文章,然后将整个博客的代码部分commit 并 push 到hexo分支,即可自动触发travis CI的持续构建服务,自动生成HTML静态文件并提交到master分支,此时博客网站即自动更新完毕。