使用github actions 自动部署的初衷

每一次修改或者新增文章的时候,都要毫不客气的进行素质三连,虽然不多,倒是久了就会觉得很烦,而且随着你文章的数目的增加,在本地编译完,生成public文件夹,通过hexo d推送到username.github.io 仓库的时间也原来越长,所以想通过github提供的自动部署来完成对博客源代码的托管和编译运行,生成静态界面。

变量名

[Blogroot]:本地存放博客源码的文件夹路径,blog

[SourceRepo]:存放博客源码的私有仓库名

[SiteBlogRepo]:存放编译好的博客页面的公有仓库名,nilonger.github.io

[SiteUsername]:用户名

[SiteToken]:申请到的令牌码,

[GithubEmail]:与 github 绑定的主邮箱

获取token

路径:点击头像,选择settings,选择 Developer settings

在personal access tokens这里,记得勾选repo

image-20210731181651321

生成需要的token,注意token只能显示一次,之后无法查看,记得保存

image-20210731181751877

注:如果不是选择长期的,我选择了30天,后面更新personal access token,直接从它提示你过期的邮箱里的链接进去就好了

一样的先把重新生成的token记下来,不然后面看不到了

然后点击更新token

image-20210829113320187

记得修改博客根目录下的_config.yml文件里面的deploy项的token

然后重新 git 三连,记得修改推送到私有仓库

创建私有仓库

用来保管博客的源代码

image-20210731181909075

配置depoly项

打开站点配置文件(也就是博客根目录下的) [Blogroot]/_config.yml

1
2
3
4
5
deploy:
type: git
repo:
gitHub: https://[GithubUsername]:[GithubToken]@github.com/[GithubUsername]/[GithubBlogRepo].git[,branch]
# [,branch]为可选项,表示部署的分支

比如我的是(我在token加几个???对我自己保密吧,你还是要用自己的token)

1
2
3
4
deploy:
type: git
repo:
github: https://nilonger:??dk8X??YA???@github.com/nilonger/nilonger.github.io.git,master

配置github actions

[Blogroot] 新建.github 文件夹,注意开头是有个. 的。然后在.github 内新建 workflows 文件夹,再在 workflows 文件夹内新建 autodeploy.yml, 在 [Blogroot]/.github/workflows/autodeploy.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
55
56
57
# 当有改动推送到master分支时,启动Action
name: 自动部署

on:
push:
branches:
- master #2020年10月后github新建仓库默认分支改为main,注意更改

release:
types:
- published

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 检查分支
uses: actions/checkout@v2
with:
ref: master #2020年10月后github新建仓库默认分支改为main,注意更改

- name: 安装 Node
uses: actions/setup-node@v1
with:
node-version: "12.x"

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

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

- name: 安装依赖
if: steps.cache.outputs.cache-hit != 'true'
run: |
npm install --save

- name: 生成静态文件
run: |
hexo clean
hexo generate

- name: 部署
run: |
git config --global user.name "[GithubUsername]"
git config --global user.email "[GithubEmail]"
git clone https://github.com/[GithubUsername]/[GithubBlogRepo].git .deploy_git
# 此处务必用HTTPS链接。SSH链接可能有权限报错的隐患
# =====注意.deploy_git前面有个空格=====
# 这行指令的目的是clone博客静态文件仓库,防止Hexo推送时覆盖整个静态文件仓库,而是只推送有更改的文件
hexo deploy

最后就剩下,重新设置远程仓库和分支、查看部署情况这两个内容,这里建议观看一下这一篇博客的讲解,比较详细,也有报错分析,不想自己再打一遍了

使用Github Action实现全自动部署 | Akilarの糖果屋

然后就可以愉快的享受自动部署的快乐了。

测试一下

修改或者新增一篇文章,push到远程仓库,看是否如我所愿

新建文章:

1
hexo new "测试github actions"

编写front-matter:

1
2
3
4
title: github actions自动部署
date: 2021-07-31 17:36:01
tags: 测试自动部署
categories: hexo博客

再随便编写文章内容,我直接以这篇文章的内容为例

内容编写差不多之后,在命令行输入

1
2
3
4
5
6
# 提交新文件(new)和被修改(modified)文件,到暂存区
git add .
# 提交代码到本地仓库,加上注释
git commit -m "测试一下github actions"
# 推送的远程仓库
git push origin master

到github查看私有仓库,会多出相应的内容

image-20210731181049786

这个时候大概等待半分钟左右(等待它帮我们编译),刷新一下你原本username.github.io的界面就可以看到新的博客啦,虽然还是要执行(素质三连)新的三个语句