Hexo 博客自动部署到 GitHub Pages 的最佳实践

这两天从新捣鼓了一下 Hexo 博客, 用 Travis CI 作了自动部署。node

作的过程当中查看了不少资料,基本上都是用在 CI 中用 Git、Hexo deploy 作的部署,还要加密 ssh-key 什么的。我基于这作了一遍,对于 Travis CI 的文件加密等等,有了更深的理解。这中间的配置,我以为至关的麻烦。可是当我从新翻阅 Travis CI 的文档的时候,我发现其实 Travis CI 能够自动静态文件部署到 GitHub Pages。只须要很是简单的配置,就能够了。git

deploy:
 provider: pages
 skip_cleanup: true
 github_token: $GITHUB_TOKEN # travis-ci.org 控制面板上设置
 on:
 branch: master复制代码

这是最基本的配置。github

skip_cleanup 的值必须为 true 否则会把你在构建时生成的文件给删除掉。hexo

on: branch: master的意思是当 master 分支有变化时,才执行这个部署。更多条件设置请参考 Deploymentssh

GITHUB_TOKEN 的生成请参考 Creating a personal access token for the command line。 若是你的仓库是公开的,那么在给权限的时候只须要给 public_repo, 若是你的仓库是私有的那就要给 repo 权限,尽可能给更少的权限。而后在控制台设置环境变量 GITHUB_TOKEN 值为刚才生成的 token。在添加环境变量的时候有个开关 Display value in build log 千万不要打开,否则别人就能够在 CI 的 log 里面看到你的 token 了,就能够对你的公开仓库进行任意修改。ide

接下来咱们就要对这个基本配置作个修改,添加更多的设置来符合咱们的需求。ui

local_dir 指的是是将要推送到 GitHub Pages 的目录,默认的值为当前目录。咱们都知道 hexo generate 生成的目录是 public ,因此咱们要将 local_dir 的值设置为 public加密

repo 指的是 GitHub Pages 所在的代码仓库,默认值为当前仓库。spa

target_branch 指的是 GitHub Pages 所使用的分支,默认为 gh-pagescode

这里有个问题,就是 Travis CI 使用 git push --force 来进行推送的,因此会清空历史,因此必定要保证你的 repotarget_branch 设置的正确。本来我是作了保留历史的配置的,改为这样用 Travis CI deploy 来作的话,就没有办法保留历史了。可是转念一想,我只要保留 blog 仓库的历史就好啦,这些只是生成的代码,因此我认为使用 Travis CI 这样的设置是合理的。

通常来讲添加这三个配置就能够了。更多配置请参考 GitHub Pages Deployment

下面是个人配置信息

language: node_js #指定环境为 Node.js

node_js:
- '7' #指定 Node.js 的版本为 7

before_install:
- export TZ='Asia/Shanghai' #设置时区 非必须

script:
- hexo generate #生成博客

deploy:
 provider: pages
 skip_cleanup: true
 github_token: $GITHUB_TOKEN
 local_dir: public
 repo: zhangweijie-cn/zhangweijie-cn.github.io
 target_branch: master
 on:
 branch: master复制代码

Travis CI 会自动帮咱们安装依赖,因此这些咱们都不须要考虑。

当咱们给 blog 所在仓库 master 分支推送文章之后,GitHub Pages 就会自动构建和部署了。

相关文章
相关标签/搜索