通过 GitLab CI 自动发布 Github Pages

用 Hexo、Jekyll 等博客框架生成静态资源,最后将生成的静态资源发布到 GitHub Pages 上,这是一种不错的写作方案。这一写作方式较大不足之处,跨平台支持不够、不能随时随地在移动设备上发布博客。虽然可以用 网络同步Hexo Backup 方案解决跨平台问题,但这两种方案都不够好。

使用 GitLab 挺长时间,知道其有 CI 功能,想到用持续集成发布内容到 GitHub,便摸索出新的方案。配置 .gitlab-ci.yml,提交 Markdown 之后生成静态资源文件,最后利用 GitHub 的 Personal access tokens 来 Commit。

1. 生成 Personal access tokens

GitHub 上生成只能操作 repotoken,这个 token 放到 GitLab 上,只用于操作 repository

2. 配置 Hexo

修改 Hexo 站点配置文件 _config.yml,配置如下:

1
2
3
4
5
deploy:
type: git
repository:
github: https://your-token:[email protected]/your-github-name/xxx.github.io.git
branch: master|gh-pages|docs

3. 配置 GitLab CI

新增 .gitlab-ci.yml 文件,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# This file is a template, and might need editing before it works on your project.
# Full project: https://gitlab.com/pages/hexo
image: node:4.2.2

cache:
paths:
- node_modules/

before_script:
- export TZ='Asia/Shanghai'
- git config --global user.name "your-github-name"
- git config --global user.email "your-github-email"
- git submodule init
- git submodule update
- npm install -g hexo
- npm install -g hexo-cli
- npm install

pages:
stage: deploy
script:
- hexo clean
- hexo generate
- hexo deploy
artifacts:
paths:
- public
only:
- master

git submodule 用于更新 Hexo 主题,如果主题是本地提交上去的,注释即可。

4. 发布博客

添加博客内容到 Git,并提交到 GitLabGitLab 会自动生成静态资源文件,并 commit 到 GitHub Pages 项目。过一会,打开 xxx.github.io 即可看到新发布的博客。

(完)