用Github Acitons在GitHub、Gitee、Coding上自动部署Hexo

本文最后更新于:2020年6月13日 晚上

首先,非常感谢辣椒大大的悉心指导,在此记录下踩的坑。
辣椒大大的教程
GitHub Actions 操作文档

一: 前言

Github Actions真香。

简单介绍下 GitHub Actions 中的术语:

  • workflow:表示一次持续集成的过程
  • job:构建任务,一个 workflow 可以由一个或者多个 job 组成,可支持并发执行 job
  • step:一个 job 由一个或多个 step 组成,按顺序依次执行
  • action:每个 step 由一个或多个 action 组成,按顺序依次执行

二: 工作流及添加密匙

2.1 创建工作流

在博客目录下创建 .github/workflows/main.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
name: Blog                                       # Actions 显示的名字,随意设置

on: [push]

#on:
# push:
# branches:
# - hexo

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v2
with:
ref: master # 改为你的源码分支

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

- name: Hexo Generate
run: |
rm -f .yarnclean
yarn --frozen-lockfile --ignore-engines --ignore-optional --non-interactive --silent --ignore-scripts --production=false
rm -rf ./public
yarn run hexo clean
yarn run hexo generate

- name: Hexo Deploy
env:
SSH_PRIVATE: ${{ secrets.SSH_PRIVATE }}
GIT_NAME: xxx # 你 GitHub 用户名
GIT_EMAIL: xxxx # 你 GitHub 邮箱
run: |
mkdir -p ~/.ssh/
echo "$SSH_PRIVATE" | tr -d '\r' > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan gitee.com >> ~/.ssh/known_hosts
ssh-keyscan github.com >> ~/.ssh/known_hosts
ssh-keyscan e.coding.net >> ~/.ssh/known_hosts
git config --global user.name "$GIT_NAME"
git config --global user.email "$GIT_EMAIL"
yarn run hexo deploy

- name: Build Gitee Pages
uses: yanglbme/gitee-pages-action@master
with:
gitee-username: xxx # 你的 Gitee 用户名
gitee-password: ${{ secrets.GITEE_PASSWORD }}
gitee-repo: xxxx/xxxx # 你的 Gitee 仓库
  1. 如果你是 master 作为最终部署分支,名为 hexo 分支作为源码分支,那么把 on: [push] 注释掉,然后下面4行取消注释。 ref: master 改为 ref: hexo
  2. 如果不用coding,则把 ssh-keyscan e.coding.net >> ~/.ssh/known_hosts 这行删掉;Coding的域名是e.coding.net,这边卡了好久,一直报错。
  3. # 的地方修改下,其他默认。

2.2 添加密匙

GitHub 中博客仓库中按照 Settings->Secrets->new secrets 找到对应的页面,然后进行私钥添加。

secrets 分别名为 GITEE_PASSWORDSSH_PRIVATE ,其中 GITEE_PASSWORD 是你 Gitee 的登陆密码,SSH_PRIVATE 是你的部署私钥。

PS:如果成功,可能会提示非常用IP地址登录,需要验证码。这个时候就需要手动部署Gitee了。(登录多了,就不会要验证码了。手动滑稽!!!)

三: 部署成功

博客仓库 Acitons -> Blog -> commit 名前有 ,则成功了,enjoying!


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!