最后还是建议用 Vercel,Azure 一类的静态网站托管平台。
配置 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/[email protected]
with:
ref: main
- name: 安装 Node
uses: actions/[email protected]
with:
node-version: '16.x'
- name: 安装 Hexo
run: |
export TZ='Asia/Shanghai'
npm install hexo-cli -g
- name: 缓存 Hexo
uses: actions/[email protected]
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/[email protected]
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。
如果没有,参见这位大佬的文章