Github 这么好的平台,不好好嫖一下怎么行。
为什么需要 Github Actions
- 省去不必要的麻烦
- hexo 生成的是静态网页,操作繁琐
- 节省部分时间
- 我们只需要将本地 Push 到 Github 中,其余步骤将由 Github Actions 完成。
没有了
如何做
当知道为什么需要使用 Github Actions之后,我们便可以开始工作了。
进行操作前,建议先将本地源码进行备份
获取 Token
- 打开 Github,依次点击Settings-Developer Settings-Personal access tokens-Tokens(classic)-Generate new token
- 创建 Token,名称随意,勾选所有权限,将生成的 Token 拷贝到文本档中备用。
- 至此,Token 的获取就算完成了
虽然名称随意,但防止 Token 过多导致混乱,建议以 blog 或类似的名字进行命名
创建仓库并上传源码
- 首先创建一个仓库名称随意。我是使用 hexo-blog-backup 命名的
- 在本地博客的终端中依次输入以下命令
1 | heco cl |
配置 Github Actions
- 依次点击仓库中的 Settings - Secrets - Actions - New repository secret
- 输入变量名 ACCESS_TOKEN ,在 Key 输入框中输入在步骤一中获取的 Token。
- 点击 Actions,创建一个 Workflows,命名随意。输入以下内容,并按照自己需求进行更改:
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
58name: Blog Deploy
# 触发条件:手动触发或在 push 到 hexo-blog-backup 分支后触发
on:
workflow_dispatch:
push:
branches:
- master
env:
TZ: Asia/Shanghai
jobs:
blog-cicd:
name: Hexo blog build & deploy
runs-on: ubuntu-latest # 使用最新的 Ubuntu 系统作为编译部署的环境
steps:
- name: Checkout codes
uses: actions/checkout@v3
- name: Setup node
# 设置 node.js 环境
uses: actions/setup-node@v3
with:
node-version: current # 使用最新的 node.js 环境
- name: Cache node modules
# 设置包缓存目录,避免每次下载
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
- name: Install hexo dependencies
# 下载 hexo-cli 脚手架及相关安装包
run: |
npm install -g hexo-cli
npm install
- name: Generate files
# 编译
run: |
hexo clean
hexo generate
- name: Deploy hexo blog
env:
GITHUB_REPO: github.com/[USERNAME]/[BLOG_REPO]
# 将编译后的博客文件推送到指定仓库
run: |
cd ./public && git init && git add .
git config user.name "[USERNAME]"
git config user.email "[USER_EMAIL]"
git add .
git commit -m "GitHub Actions Auto Builder at $(date +'%Y-%m-%d %H:%M:%S')"
git push --force --quiet "https://${{ secrets.ACCESS_TOKEN }}@$GITHUB_REPO" master:master
# 上述中,请将[USERNAME]、[BLOG_REPO]、[USER_EMAIL]分别修改为自己的用户名、博客储存仓库、邮箱
手动触发测试
完成以上步骤后,建议进行手动触发进行测试,并检查相关错误并纠正。