使用 travis-ci 持续集成 Hexo 静态博客

Author Avatar
Pang Jian 5月 25, 2016
总字数:800 预计阅读:3 min
  • 在其它设备中阅读本文章

Hexo 是一个基于 Nodejs 的轻量级静态博客生成框架。静态博客生成程序会将我们所写的博客生成为一套 HTML+CSS+JavaScript 代码,我们将这个代码部署到诸如 Github Page 这样的地方就可以在世界任何一个地方访问我们的博客了。这种方案有一个非常有利的优点–免费。但是,hexo 环境不是处处都有,换个地方写作变成了一件麻烦事。而且写完文章以后需要 hexo ghexo d 等一系列操作,着实很麻烦。本篇文章利用 Travis CI 解决以上痛点。

简介

Travis CI 提供一个在线的持续集成服务,用来构建托管在 github 上的代码。许多知名的开源项目使用它来自动构建测试代码。它支持 hexo 的运行环境 node.js。原理很简单,Travis 会在你每一次在 github 上提交代码后,生成一个 Linux 虚拟机来运行你配置好的任务。生成和部署 hexo 只需要一个命令hexo gd,但是 Travis CI 需要有我们的 github 项目上传代码的权限,所以我们需要使用 SSH key 来使 Travis CI 拥有权限。还有一些其他的问题也都参开 hexo 作者的博文解决了, 用 Travis CI 自动部署网站到 Github

配置 SSH Key

生成 SSHKey

此步骤网上教程较多,此处只是简单介绍。

ssh-keygen -t rsa -C "youremail@example.com"

按要求操作后会生成两个文件 id_rsaid_rsa.pub, 然后加入 SSH agent。

ssh-add ~/.ssh/id_rsa

然后,我们将 id_rsa.pub 中的内容添加到 github 中,如果你还使用其他 Page 服务,也需要添加到对应的托管平台。我就在同时使用 Coding.net。

加密私钥

我们不可能把代码库的 SSH key 直接上传到代码库,那样任何人都可以有权限往你的代码库中提交代码,这是不安全的。这一步操作就是为了解决这个问题。将私钥加密后上传,Travis CI 在构建的时候解密。
安装 travis-ci 的命令行工具

gem install travis

登录 Travis CI

travis login --auto

使用 travis 命令行工具加密私钥

travis encrypt-file ssh_key --add

指定 SSH 设置

在根目录下新建文件ssh_config, 内容见我的设置, 我同时设置了两个 page 服务。

Host github.com
  User git
  StrictHostKeyChecking no
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes

Host git.coding.net
  User git
  StrictHostKeyChecking no
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes

travis CI 解密配置

这部分内容需要配置在 .travis.yml 里, 注意修改秘钥

- openssl aes-256-cbc -K $encrypted_26b4962af0e7_key -iv $encrypted_26b4962af0e7_iv
  -in id_rsa.enc -out ~/.ssh/id_rsa -d

我的 .travis.yml 配置

上面的描述如果有不明白的地方直接查看我这份完整版的配置文件,拿去修改就可以直接使用。

language: node_js

node_js:
- '4.1'

before_install:
- openssl aes-256-cbc -K $encrypted_26b4962af0e7_key -iv $encrypted_26b4962af0e7_iv
  -in id_rsa.enc -out ~/.ssh/id_rsa -d
- chmod 600 ~/.ssh/id_rsa
- eval $(ssh-agent)
- ssh-add ~/.ssh/id_rsa
- cp ssh_config ~/.ssh/config
- git config --global user.name "pangjian"
- git config --global user.email "pangjian1010@gmail.com"

install:
- npm install hexo-cli -g
- npm install

script:
- hexo -version
- hexo clean
- hexo g
- hexo deploy

EOF

Documentation licensed under CC BY-SA 4.0.
本文链接:https://www.pangjian.me/2016/05/25/travis-ci-hexo/