本文记录一下利用 github actions 来部署 hexo 到国内的 coding.net pages 服务。国际比较简单,但是笔者却尝尽了苦头😹。

心血来潮,突然想起来域名还没有过期,也不知道第几次搞博客了,就用 hexo 生成了一个.
源内容保存在 github 的私有仓库里面,最终用 hexo-deploy-git 发布静态文件到 codig.net,没有用到 github-pages。

步骤:

1. 配置 hexo 并生成项目
2. 安装 hexo-deploy-git 插件
3. github 上创建 blog 仓库,并添加 .github/workflows/hexo.yml
4. coding.net 创建仓库,配置 pages 服务,绑定域名
5. 在 coding.net /user/account/setting/tokens 生成访问令牌
6. 在 github 的 blog/settings/secrets 配置第5步生成的令牌, title 为 CODING_DEPLOY_KEY
7. push 代码到 github,github actions 执行并 deploy 到 coding.net

_config.yml 关键信息如下

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: https://git.coding.net/kunl/kunl.git

.github/workflows/hexo.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
30
31
32
33
34
35
name: hexo deploy

on: [push]

jobs:
build:

runs-on: ubuntu-latest

steps:
- name: checkout
uses: actions/checkout@v1

- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '13.x'

- name: Setup Hexo env
run: |
npm i -g hexo-cli
npm i

- name: Hexo Deploy
env:
CODING_DEPLOY_KEY: ${{ secrets.CODING_DEPLOY_KEY }}
run: |
# set git infomation
git config --global user.name 'kunl'
git config --global user.email '[email protected]'

# 通过 sed 命令来替换 _config.yml 内容
sed -i -e 's,https://git.coding.net/kunl/kunl.git,https://kunl:${{ CODING_DEPLOY_KEY }}@git.coding.net/kunl/kunl.git,g' _config.yml
hexo generate && hexo deploy --setup

有同学会问,问什么不直接配置 _config.yml deploy.token= ${ { CODING_DEPLOY_KEY } }, 因为试过了,没成功。 hexo-deploy-git 读取到 token 参数后,设置 git 命令的 username 为 token 的内容。但是 coding 参数为 name,很坑爹。另外也可以通过 ssh 来部署,但是我尝试了没有成功😿。