使用Travis CI自动部署Hexo
前言
之前换过很多的静态博客系统,但是每个系统都需要本地做一定的部署,这点很麻烦。
Gor 倒是有可执行文件,但是本地部署的时候还是需要合并提交代码,还是略不爽。
今天在查 CI 系统的时候发现了 Travis CI ,于是,一切都很开心了。
关于 Travis CI
这是一个通过脚本来进行自动部署的系统,本身与 Github 高度集成,目前对于公开的项目免费支持。
开启travis-ci
首先去 Travis CI 官网,点击右上角Sign in with GitHub通过github授权登录。然后去到个人信息页面,开启需要使用 travis 的项目,在我这里就是 DrayChou/Blog-Hexo 。
密钥
因为需要通过脚本提交到 Github ,所以需要先申请一个 token ,避免密码或者证书问题造成的麻烦。
Token 申请地址是 https://github.com/settings/tokens 。
记得给予 public_repo 的权限,要不无法提交修改到 GitHub。
记得这个 token ,后面会用到。
Travis CI 的命令行工具
执行下面的命令安装命令行工具。
gem install travis
生成脚本
切换到 blog 的目录下,执行下面的命令,记得输入 node 语言
$ travis init
detected repository as DrayChou/Blog-Pugo
Main programming language used: |HTML| node
.travis.yml file created!
enabled
设置脚本
编辑这个 .travis.yml ,按需添加对应的项。 env.global.secure 是发布的时候生成的数据,请无视。
language: node_js
node_js:
- '5.1'
env:
global:
- secure: "long secure base64 string"
before_install:
- export TZ=Asia/ShangHai
install:
- npm install
script:
# 初始化 GIT
- git config --global user.name "$GIT_NAME"
- git config --global user.email "$GIT_EMAIL"
- git config --global push.default simple
# 设置项目路径
- rm -rf public
- git clone --depth 50 --branch gh-pages https://$GH_TOKEN@github.com/$GIT_NAME/$HEXO_BLOG public
# 生成
- hexo generate
# 发布出去
- cd public
- git add -A .
- MESSAGE=`date +\ %Y-%m-%d\ %H:%M:%S`
- git commit -m "Site updated:$MESSAGE"
- git push origin gh-pages --quiet
执行下面的命令添加执行操作
命令的参数请自行替换。
travis encrypt 'GIT_NAME="<Personal GitHub Name>" GIT_EMAIL="<Personal GitHub Email>" HEXO_BLOG="<Personal Blog Repositories>" GH_TOKEN="<Personal Access Token>"' --add
命令执行完毕之后会自动修改 .travis.yml 添加对应的 env.global.secure。
把这个文件提交到 Github。
开始执行
Push 到 Github 之后, Github 就会通过之前定义的 hook 去调用 travis ,然后 travis 就会在后台开始按照脚本执行,可以在 travis-ci 后台通过查看日志观察发布有没有问题,如果有问题再按照提示进行调试。
附记
注意:git push 時一定要加 —quiet,否則先前設定的 Personal Access Token 將會印出,這樣就失去加密意義了。