配置 Token
打开 Github,点击右上角头像,再点击「Settings」。

下拉网页,点击「Developer settings」。

点击「Personal access tokens」,再点击「Generate new token」

随便输入名字,将「Expiration」改为「No Expiration」,下方勾选「repo」和「workflow」,网页下滑点击「Generate token」。随后将生成的 Token 复制备用。
请注意!Token 不会再次显示!作者强烈建议不要关闭生成 Token 的标签页!请等到自动部署成功后再关闭!
请不要将自己的 Token 外泄!除非你知道您泄露给的人值得您去信任

仓库配置
我们要让从本地推送上来的文件进入存放 Hexo 全部文件的仓库,再从这个仓库中部署 Hexo 至你的页面文件仓库。
新建一个仓库,名称任意,最好是有明显意义的名称,例如「Hexo_Blog_Source」。
仓库您可以设为「Public」或「Private」,您可以根据您自身博客的情况进行选择。在您的博客源文件下拥有一些私密数据的情况下就不要选择「Public」了。

进入仓库界面,点击「Settings」,点击「Secrets」,点击「Actions」,点击「New repository secret」。

名称填入「GH_TOKEN」,在下方填入我们刚刚生成的密钥,再点击「Add secret」。

Git 配置
打开本地的博客文件夹,右键打开终端。

如果你没有初始化 Git 的话,请先初始化 Git。
git init
git branch -m main
接着连接到远程库
git remote add origin 你的远程库地址
远程库地址点击仓库上的「Code」,复制远程库地址。

在本地上新建一个文件夹,取名为「.github」,接着再在这个文件夹内新建一个文件夹,取名为「workflow」。在 workflow 文件夹内新建一个名为「autodeploy.yml」的文件。这是我们自动部署所运行的代码。

打开 autodeploy.yml,按照注释填入以下内容
name: 自动部署
on:
push:
branches:
- main
release:
types:
- published
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 检查分支
uses: actions/checkout@v2
with:
ref: main
- name: 安装 Node
uses: actions/setup-node@v1
with:
node-version: '16.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 -g -c 2
- name: 部署到Github
uses: JamesIves/github-pages-deploy-action@v4
with:
token: ${{ secrets.GH_TOKEN }}
repository-name: FreeDivers/FreeDivers.github.io #此处更改为你的仓库名称,格式为「用户名/用户名.github.io」
branch: main
folder: public
commit-message: '${{ github.event.head_commit.message }} Updated By Github Actions'
最后输入以下代码将其推送到仓库
git add .
git commit -m first_commit
git push origin main -u
如果没有问题的话,在仓库界面打开「Actions」就可以看到运行结果了
剔除不需要上传的文件
有些文件或文件夹你可能不需要一并上传到远程库,这样可以节省上传的时间和部署的时间。
打开博客源文件目录下的「.gitignore」,即可添加或去除不想上传的文件或者文件夹。
更新时间重置问题
在使用了这个自动部署之后,每篇博文的更新时间都会变成自动部署成功时的时间。因为博文的更新时间看的是博文中「Front-matter」部分中的「updated」中的时间。所以只要博客在写之前就定义好了 updated,文章更新时间就不会随着自动部署变化。
为以后的文章解决这个问题
打开博客文件目录\scaffolds\post.md
添加如下内容
date: {{ date }}
updated: {{ date }}
保存
之后只要新建博文的时候输入
hexo new post "标题名称"
就可以自动加上 updated 了。
为之前的文章解决这个问题
如果你已经自动部署过了,那么你只能手动去修改 updated。
如果没有,参见这位大佬的文章