前言

网上虽然有很多通过 GitHub Actions 自动部署 Hexo 的教程,但都有各种各样的问题。 主要问题还是 Workflow 脚本没有写正确,比如插件部分。

建议

将仓库设置为私有仓库

步骤

1、生成密钥对 (这个也不会的话,方法自行 Google)

ssh-keygen -t rsa -b 4096 -f ~/.ssh/GitHub-actions-deploy

然后会获得一个公钥和私钥。

2、在 GitHub Pages 所在的仓库中添加 “公钥”

找到仓库的 Settings - Deploye keys - Add deploy key

  • Title 填入:ACTION_DEPLOY_KEY
  • Key 填入:# 步骤1生成的密钥对中的公钥
    勾上 Allow write access

3、在存放 Hexo 源文件的仓库中添加 “私钥”

PS: 跟步骤 2 中的仓库可能是同一个,也可能不是同一个。根据自己的选型设置。

找到仓库的 Settings - Secrets - Add a new secret

  • Name 填入:HEXO_DEPLOY_PRIVATE_KEY
  • Value 填入:# 步骤1生成的密钥对中的私钥

4、修改一下 Actions 脚本

下文贴出的 Actions 的 Wordflows 脚本中,其中 2 个地方要改为自己的信息:

git config --global user.name '你Git的用户名' 
git config --global user.email '你Git的邮箱'

5、修改一下根目录的 _config.yml 文件

deploy:
type: git
repo:
github: https://Github的用户名:Github的操作秘钥@github.com/用户名/用户名.github.io.git
gitee: https://Gitee的用户名:Gitee的操作秘钥@gitee.com/用户名/用户名.git
branch: master

例如:

deploy:
type: git
repo:
github: https://beilinet:ghp_lhLAiSceYiyfWRR5tBD5*************kjQ@github.com/beilinet/beilinet.github.io.git
gitee: https://beilinet:eab2be1b6fa81*************a06898@gitee.com/beilinet/beilinet.git
branch: master

代码配置:

注意修改其中提到的几个地方

name: 自动部署 Hexo

# master branch on push, auto run
on:
push:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository master branch
uses: actions/checkout@master

- name: Setup Node.js 10.x
uses: actions/setup-node@master
with:
node-version: "10.x"

- name: Setup Hexo Dependencies
run: |
npm install hexo-cli -g
npm install

- name: Setup Deploy Private Key
env:
HEXO_DEPLOY_PRIVATE_KEY: ${{ secrets.HEXO_DEPLOY_PRIVATE_KEY }}
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRIVATE_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts

- name: Setup Git Infomation
run: |
git config --global user.name '你Git的用户名'
git config --global user.email '你Git的邮箱'
- name: Deploy Hexo
run: |
hexo clean
hexo generate
hexo deploy

成功截图