用GitHub Action自动构建Hexo
前言
之前一直是在本地使用hexo,构建完成后再上传到GitHub。但是这样的缺陷就是只能在本地写文章,且没有源文件的备份,文章丢了找不回来。(参见这位)
实现原理是创建一个新的仓库,用于储存hexo文件,通过Action自动构建后推送到原来的纯前端仓库。
至于cloudflare pages的自动构建,其实本质上应该能用(还更方便)。但我尝试多次都在npm install的时候报错,不知道是什么原因。构建参数放在下面,可以自行尝试。
配置git
创建一个仓库,可以私人也可以公开。不用添加
README.md
按照正常流程配置GitHub密钥,可以百度找,很多教程
大致就是:创建RSA - 在GitHub上绑定SSH key(注意先别push
配置忽略的文件。hexo目录下有一些文件不需要推送,可以配置忽略。
1
2//创建.gitignore文件
touch .gitignore文件中写入:
1
2
3
4
5node_modules/
public/
.deploy_git/
/yarn.lock
/package-lock.json注意:.gitignore只能忽略未被缓存过的文件。如果在忽略前推送过,请在缓存中删除:
git rm -r --cached xxx
yarn.lock 和 package-lock.json 可能会影响到Action自动构建时模块安装,留个 package.json 就行。
在
_config.yml
中修改deploy参数(repo一定要用git格式!不要https!1
2
3
4
5deploy:
type: git
repo: git@github.com:xxx/xxx.git #储存前端页面的仓库,不是新建的Hexo仓库!!
branch: main #默认分支
message: update #随便写啥都行
配置GitHub Action
在本地目录中创建.github/workflows
目录,新建main.yml
1 | # workflow name |
如果你的仓库(前端仓库)默认分支不是main,可以修改。
接着去GitHub页面配置Action的环境变量:Settings
- Secrets and variables
- Actions
添加三个环境变量:
Name | Secret |
---|---|
GH_EMAIL | 你GitHub账号绑定的邮箱 |
GH_USERNAME | 你GitHub用户名 |
HEXO_DEPLOY_PRIVATE_KEY | RSA私钥(见下 |
其中RSA密钥可以是你绑定远程仓库时在本地创建的私钥,一般储存在C:\Users\xxx\.ssh\id_rsa
或者~/.ssh/id_rsa
(不是id_rsa.pub
)。 使用文字编辑器打开后复制到环境变量Secret中即可。
或者可以创建一个新的RSA:
1 | ssh-keygen -t rsa -b 4096 -C "email@example.com" //GitHub绑定的邮箱 |
注意不要保存在默认位置,另找一个地方放。Enter passphrase的时候直接回车。
生成了两个文件,[rsa]
和[rsa].pub
分别是私钥和公钥。私钥填进环境变量中,公钥设置为静态仓库的Deploy keys。
推送到GitHub仓库
1 | //初始化本地仓库 |
常见报错:
error: src refspec main does not match any
本地分支与远程分支不同。本地分支改个名就行:
git branch -m main
![rejected] main -> main (fetch first) error: ...
本地分支和远端分支冲突,加个
--force
强制覆盖就行了:git push origin main --force
或者先git pull拉取远程文件也行
完成
不出意外的话Hexo文件已经上传到GitHub了。可以去Hexo仓库检查Action运行情况,若运行成功再去前端仓库中查看是否有提交记录。如果一切正常,那么恭喜,你成功了。
每次Hexo仓库中有新的提交时,Action会自动构建并推送到前端仓库。你也可以在手机GitHub App中编辑文章。
如果你觉得每次在本地编辑完之后手动提交GitHub很麻烦,可以创建一个push_hexo.bat
:
1 | set http_proxy=http://127.0.0.1:10809 |
设置代理是为了避免网络原因上传失败,你不需要的话可以删掉。
如果需要同步远程仓库中的文件,可以git pull
(拉取远程文件后直接合并)或git fetch
(检查后决定是否合并)
- Title: 用GitHub Action自动构建Hexo
- Author: ScaredCube
- Created at : 2024-01-30 12:24:02
- Updated at : 2024-12-01 15:29:49
- Link: https://sccube.link/actionBuildHexo/
- License: This work is licensed under CC BY-NC-SA 4.0.