改为由 Travis CI 部署

突然想起来用 Travis CI 来替换掉之前用的 hexo-deployer-git, 正好避免了源文件的管理混乱 虽然本来也没几篇文章

顺道还把被停用很久的 swiftype 关了换回了 Google CSE。一度不知道 swiftype 取消了免费账户

网上很多老资料用的 Custom Deployment 的方法,现在 Travis CI 已经支持 GitHub Pages,只需要简单的配置一下即可。

Hexo 提供了 设置指南 以及 .travis.yml 的配置例子,当设置好后每次提交源文件到 master 分支 TravisCI 会自动生成页面并且部署到 gh-pages 分支上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo: false
language: node_js
node_js:
- 10 # use nodejs v10 LTS
cache: npm
branches:
only:
- master # build master branch only
script:
- hexo generate # generate static files
deploy:
provider: pages
skip-cleanup: true
github-token: $GH_TOKEN
keep-history: true
on:
branch: master
local-dir: public

需要注意的是该方法不适用于仓库名为 <user>.github.io 这种格式的仓库,因为 GitHub 必须从 master 分支生成 user 和 organization 的页面而不是 gh-pages。

User pages must be built from the master branch.

因此如果用的是 personal 或者需要修改一下官方文档上的 yml 文件配置。

现在 Travis CI 默认的依旧是 dpl v1,但是在 log 里又会按照 dpl v2 的指示弹警告,像

deploy: deprecated key skip_cleanup (not supported in dpl v2, use cleanup)

cleanup在 dpl v2 中默认是设置为 false 的而 dpl v1 中仍需要手动加入 skip_cleanup: true 来避免生成目录被删除。

还有 sudo: false 已被弃用 github_token 已经被替换为 token 等部分 dpl v2 的属性又已经被支持

在基于目前的新文档的建议下,最后的 .travis.yml 设置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
os: linux
language: node_js
node_js:
- 10
cache: npm
branches:
only:
- source # store source code of hexo in source branch
script:
- hexo generate
deploy:
provider: pages
skip_cleanup: true
token: $GH_TOKEN
keep_history: true
target_branch: master
on:
branch: source
local_dir: public