前言

这篇文章介绍了通过访问令牌的的方式去推送hexoGitHub PageCoding Page 但是是使用git强制推送上去的,由于我使用了百度推送,所以需要使用 hexo d的方式推送,才能保证百度推送工作。

准备

首先要安装插件,这个插件只要是在本地使用hexo d这个命令都装上了的吧。

1
npm install hexo-deployer-git --save

同时在Hexo项目根目录配置文件_config.yaml中配置

1
2
3
4
5
6
7
8
deploy:
- type: git
repo:
github: git@github.com:imgyh/imgyh.github.io.git
coding: git@e.coding.net:guoyuanhong/hexo/hexo.git
branch: master

- type: baidu_url_submitter #百度推送,如果你安装了推送的插件就写上,没有就不用管

密钥准备

为了方便运行 GitHub Actions 时登录 GitHub 账号,我们使用SSH方式登录。就是要把设备的私钥交给GitHub Actions,公钥交给GitHub,需要去Settings里去配置。

使用ssh-keygen生成一组公私秘钥对,默认回车就可以了,执行后会生成id_rsa.pubid_rsa

1
2
3
ssh-keygen -t rsa -C "Github 的邮箱地址"

如 ssh-keygen -t rsa -C "123123123@gmail.com"

配置公钥

使用 cat .ssh/id_rsa.pub 查看公钥,将其复制到 GithubCoding 相应位置
Github 配置路径:github网站–>Settings–>SSH and GPG keys
Coding配置路径:个人账户设置->SSH公钥->新增公钥,可以设置永久

配置私钥

使用 cat .ssh/id_rsa 查看私钥。
blog源码仓库的Settings->Secrets里添加变量。

  • GH_KEYid_rsa 里的内容

  • CODEING_KEY : 和 GH_KEY 一样,也设置为id_rsa 里的内容

  • GIT_USERgitname ,用于设置全局 git 基本信息

  • GIT_MAILgitemail ,用于设置全局 git 基本信息

配置GitHub Actions

在blog源码仓库的 Actions 选项卡下点击 新建workflow ,名称默认或者自定义修改,编写如下配置。

以下配置来源于 小康博客

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# workflow name
name: Hexo Blog CI

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

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.18.2]
steps:
# check it to your workflow can access it
# from: https://github.com/actions/checkout
- name: 1. 检查master分支
uses: actions/checkout@master

# from: https://github.com/actions/setup-node
- name: 2. 设置Node.js
uses: actions/setup-node@master
with:
node-version: ${{ matrix.node-version }}

- name: 3. 安装 Hexo CI
run: |
export TZ='Asia/Shanghai'
npm install hexo-cli -g
npm install gulp -g

- name: 4. 缓存
uses: actions/cache@v1
id: cache-dependencies
with:
path: node_modules
key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}

- name: 5. 安装插件
if: steps.cache-dependencies.outputs.cache-hit != 'true'
run: |
npm install

- name: 6. 设置私钥信息
env:
# HEXO_DEPLOY_PRIVATE_KEY: ${{ secrets.HEXO_DEPLOY_PRIVATE_KEY }}
CODEING_KEY: ${{ secrets.CODEING_KEY }}
GH_KEY: ${{ secrets.GH_KEY }}
run: |
mkdir -p ~/.ssh/
echo "$GH_KEY" > ~/.ssh/id_rsa
echo "$CODEING_KEY" > ~/.ssh/coding_rsa
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/coding_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
ssh-keyscan e.coding.net >> ~/.ssh/known_hosts # 注意,Coding的地址已经改成e.coding.net,很多教程中使用的地址都是旧的,导致无法完成部署
- name: 7. 设置git信息
run: |
git config --global user.name '${{ secrets.GIT_USER }}'
git config --global user.email '${{ secrets.GIT_MAIL }}'
- name: 8. hexo命令三连
run: |
hexo clean
hexo generate
gulp
hexo deploy