抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

写在前面

注意

现在是2023-09-14,本文章写于2021年,使用butterfly作为博客主题的时候,部分书写可能有些错误,请注意结合自己的实际情况,不过该文章介绍的方法与主题无关。

没用过Actions的建议细看,好好理解其工作原理和流程

本文大部分参考 [糖果屋] 的教程,详见糖果屋-使用Github Action实现全自动部署, 感谢大佬!

Github Actions简介

Github Actions 可以理解为一个自动化脚本,当它检测到某个仓库发生变化后,自动执行脚本语句

在这里可以让脚本自动执行 hexo cl && hexo g -d 三连操作

获取令牌(Token)

为了确保交由 Github Action 来持续部署时,Github Action 具备足够的权限来进行 hexo deploy 操作[因为远程服务器的git不能使用ssh方式推送],需要先获取 Token,博主分别在 GithubGiteeCoding 处部署了静态页面,所以也就需要获取这三处的 Token

当我们获取了token后,在 _config.yml文件的 deploy 项就可以使用了

访问 Github-> 头像(右上角)->Settings->Developer Settings->Personal access tokens->generate new token, 创建的 Token 名称随意,但必须勾选 repo 项。

image-20210913220005116

image-20210913220422469

token 只会显示这一次,之后将无法查看,所以务必保证你已经记录下了 Token。之后如果忘记了就只能重新生成重新配置了。

访问 Gitee-> 头像(右上角)-> 设置 -> 私人令牌 -> 生成新令牌

image-20210913221257282

token 只会显示这一次,之后将无法查看,所以务必保证你已经记录下了 Token。之后如果忘记了就只能重新生成重新配置了。

访问 Coding-> 头像(右上角)-> 个人账户设置 -> 访问令牌 -> 新建令牌。

image-20210913221822733

image-20210913221754924

注意coding平台与Github、Gitee不同,它生成的令牌还有【令牌用户名】,并且只会显示这一次,之后将无法查看,所以务必保证你已经记录下了 Token令牌用户名。之后如果忘记了就只能重新生成重新配置了。

创建存放源码的私有仓库

展开

我们需要创建一个用来存放 Hexo 博客源码的私有仓库 [SourceRepo],这点在 Win10Hexo 博客搭建教程中有提到。为了保持教程的连贯,此处再写一遍。
img

创建完成后,需要把博客的源码 push 到这里。首先获取远程仓库地址,此处虽然 SSHHTTPS 均可。SSH 在绑定过 ssh key 的设备上无需再输入密码,HTTPS 则需要输入密码,但是 SSH 偶尔会遇到端口占用的情况。请自主选择。
img

这里之所以是私有仓库,是因为在接下来的配置中会用到 Token,如果 Token 被盗用,别人可以肆意操作你的 github 仓库内容,为了避免这一风险,才选择的博客源码闭源。

配置 deploy 项

打开站点配置文件 [Blogroot]/_config.yml, 找到 deploy 配置项,使用之前生成的 [SiteToken] 和各个站点仓库 URL 来组装地址。

1
2
3
4
5
6
7
8
deploy:
- type: git
repo:
gitHub: https://[GithubUsername]:[GithubToken]@github.com/[GithubUsername]/[GithubBlogRepo].git[,branch]
gitee: https://[Gitee用户名]:[GiteeToken]@gitee.com/[GiteeUsername]/[GiteeBlogRepo].git[,branch]
coding: https://[令牌用户名]:[CodingToken]@e.coding.net/[CodingUsername]/[CodingBlogRepo].git[,branch]
# [,branch]为可选项,表示部署的分支
#2020年10月后github新建仓库默认分支改为main,注意更改

注意:Gitee的用户名如果含有大写字母,要改为小写; coding的【令牌用户名】是生成令牌时显示出来的,如果没有注意,要重新生成一次

参考我个人的写法:

1
2
3
4
5
6
deploy:
type: git
repo:
github: https://aJream:XXXXXXXXXXXXXXXXXXXXXXXXXXXX@github.com/aJream/aJream.github.io.git,master
gitee: https://ajream:XXXXXXXXXXXXXXXXXXXXXXXXXXXX@gitee.com/ajream/ajream.git,master
coding: https://xxxxxxxxxx:XXXXXXXXXXXXXXXXXXXXXXXXXXXX@e.coding.net/ajream/page/blog1.git,master

配置 Github Action

[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

注意看代码里面的注释

重新设置远程仓库和分支

  1. 添加屏蔽项
    因为能够使用指令进行安装的内容不包括在需要提交的源码内,所有我们需要将这些内容添加到屏蔽项,表示不上传到 github 上。这样可以显著减少需要提交的文件量和加快提交速度。
    打开 [Blogroot]/.gitignore, 输入以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    .DS_Store
    Thumbs.db
    db.json
    *.log
    node_modules/
    public/
    .deploy*/
    .deploy_git*/
    .idea
    themes/butterfly/.git

    如果不是 butterfly 主题,记得替换最后一行内容为你自己当前使用的主题

  2. 提交源码到刚才新建的私有仓库

    在博客根目录 [Blogroot] 下启动终端,使用 git 指令重设仓库地址。这样在新建仓库,我们仍旧可以保留珍贵的 commit history,便于版本回滚。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    git remote rm origin # 删除原有仓库链接
    git remote add origin git@github.com:[Github用户名]/[私有仓库名].git #[SourceRepo]为新的存放源码的github私有仓库
    git checkout -b master # 切换到master分支,
    #2020年10月后github新建仓库默认分支改为main,注意更改
    # 如果不是,后面的所有设置的分支记得保持一致
    git add .
    git commit -m "github action update"
    git push origin master

    #2020年10月后github新建仓库默认分支改为main,注意更改

可能遇到的 bug
因为 butterfly 主题文件夹下的.git 文件夹的存在,那么主题文件夹会被识别子项目。从而无法被上传到源码仓库。若是遇到添加屏蔽项,但是还是无法正常上传主题文件夹的情况。请先将本地源码中的 themes 文件夹移动到别的目录下。然后 commit 一次。接着将 themes 文件夹移动回来,再 commit 一次。

  1. 删除或者先把 [Blogroot]/themes/butterfly/.git 移动到非博客文件夹目录下,原因是主题文件夹下的.git 文件夹的存在会导致其被识别成子项目,从而无法被上传到源码仓库。

  2. 在博客根目录 [Blogroot] 路径下运行指令

    1
    2
    3
    4
    5
    git init #初始化
    git remote add origin git@github.com:[Github用户名]/[私有仓库名].git #[SourceRepo]为存放源码的github私有仓库
    git checkout -b master # 切换到master分支,
    #2020年10月后github新建仓库默认分支改为main,注意更改
    # 如果不是,后面的所有设置的分支记得保持一致
  3. 添加屏蔽项
    因为能够使用指令进行安装的内容不包括在需要提交的源码内,所有我们需要将这些内容添加到屏蔽项,表示不上传到 github 上。这样可以显著减少需要提交的文件量和加快提交速度。
    打开 [Blogroot]/.gitignore, 输入以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    .DS_Store
    Thumbs.db
    db.json
    *.log
    node_modules/
    public/
    .deploy*/
    .deploy_git*/
    .idea
    themes/butterfly/.git # 如果不是 butterfly 主题,记得替换最后一行内容为你自己当前使用的主题

完成后就可以用git指令进行提交到Github源码仓库,Actions监测到仓库发生改变会自动部署

1
2
3
4
git add .
git commit -m "github action update"
git push origin master
#2020年10月后github新建仓库默认分支改为main,注意更改

此时你的主题文件夹若已经被正常上传,并且你也添加了主题文件夹下的.git 文件夹的屏蔽项。那可以考虑把第二步移走或删除的.git 放回来,用作以后升级。(不禁怀疑真的有人会去用这个方式来升级吗)

查看部署情况

image-20210913232006065

点击正在运行的workflow就可以查看部署情况

image-20210913233828678

image-20210913234018254

我遇到的Bug

Bug:

Spawn Failed

原因主要就是配置deploy项时仓库的git链接没有正确配置,比如 :

  1. gitee仓库的用户名使用大写就不行,要改为小写(平台上的用户名不用改,只需要改链接中的)
  2. 配置coding时没有仔细看教程,用户名必须要使用生成 token 时系统同时生成的令牌用户名

看板娘不能显示

删除 BlogRoot/themes/butterfly/source/live2d-widget 下的 .git 文件

然后执行:

1
2
3
4
git rm --cached /themes/butterfly/source/live2d-widget
git add .
git commit -m "修复看板娘不能正常显示"
git push origin master

评论