配置 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。

如果没有,参见这位大佬的文章