使用GitHub Action实现Hexo博客自动发布
基本信息
| 服务器选择 | GitHub | 博客时间 | 2023.10.10 |
|---|---|---|---|
| 搭建结果 | 使用GitHub Action实现Hexo博客自动发布 |
准备
两个GitHub 仓库
一个作为博客源码的仓库:BlogWebsite,Private性质的
一个作为静态文件的仓库:lossinwind.github.io,即github pages的仓库
特别指出:由于我之前的工具集为本地架设,本地编译后push到lossinwind.github.io,结合云端的github pages发布的。所以lossinwind.github.io这个仓库已经有了,同时本地的hexo代码也已经有了。我是在此基础上进行的github actions自动发布的搭建
git配置
开头我们已经创建了 BlogWebsite 的 github 仓库,我们将BlogWebsite与本地的hexo项目关联上,即先push到BlogWebsite仓库中去
进入本地目录:在本地项目右键gitbash here 或者 $ cd /Users/project/hexo
然后执行下面步骤
1 | $ git init |
origin为远程仓库名,可以随便设置。’https://github.com/LossInWind/BlogWebsite.git‘为仓库的url地址
仓库配置
先使用git生成一对密钥,在用户/.ssh文件下生成hexo-deploy-key 和 hexo-deploy-key.pub 两个文件
首先
BlogWebsite仓库进行配置:Settings -> Secrets -> Actions -> new repository secret 页面上添加一个新的 Secret
添加如下
1 | Name: HEXO_DEPLOY_PRI # 这个值下面还会用到的 |
其次
lossinwind.github.io仓库进行配置:Settings -> Deploy keys -> add deploy key 页面上添加一个新的 Secret。添加如下
1 | Title: hexo-deploy-key |
新建GitHub Action编写 Workflow
1 | name: Hexo Deploy |
注意,内容中的 HEXO_DEPLOY_PRI 需要和上面BlogWebsite仓库的 Secrets的name保持一致。待编辑好保存
执行效果
当我们将本地的hexo项目push到BlogWebsite仓库后,在BlogWebsite仓库我们可以看到代码已经更新了,
然后,我们点击Actions tab,可以看到执行成功
此时编译渲染后的页面也会推送到lossinwind.github.io仓库,github page也会更新
可能出现的问题
themes/butterfly目录代码未提交到仓库
actions发布过程没有报错。但是 Post Checkout 节点可以发现提示:fatal: No url found for submodule path ‘themes/next’ in .gitmodules
同时查看仓库文件,可以发现BlogWebsite 仓库的 themes/butterfly 路径下啥也没有,而本地hexo项目 themes/butterfly 下包含很多文件夹和文件
此时可以知道问题是themes/butterfly/ 文件夹下的文件夹及文件没有上传到 BlogWebsite 仓库。
原因
因为 themes/butterfly/有自己的 .git,即 themes/butterfly/ 是 /Users/project/hexo 下 .git 的 submodule。
简单地说,就是外部仓库无法 track 一个嵌套仓库,外部仓库所有的 add,commit,push 都与嵌套仓库没有任何关系。
解决方法
注意:如果你之前尝试添加过嵌套仓库,应该先执行以下命令移除它:git rm -f –cached themes/butterfly
最简单直接的方法就是把 themes/butterfly 目录下的 .git 文件夹删掉,这样我们的主题文件夹就是一个普通的目录,而不是一个 git 仓库,这样嵌套仓库的内容就会成为当前仓库内容的一部分,就可以使用 git add 对这些文件进行跟踪。
操作完以上,再在本地hexo项目根路径下进行 git add commit 等操作后,会发现上述问题都好了。
hexo c && hexo g && hexo d执行不了
没有报错,但是lossinwind.github.io仓库没有更新,说明hexo d出现问题
同时显示
1 | Usage: hexo <command> |
原因
因为hexo没有在正确的目录运行,可以通过运行pwd 或 ls来确定当前工作流的文件夹
解决方法
添加表明当前工作目录的代码working-directory: ./ChenBlog
1 | jobs: |
参考链接
GitHub Actions实现Hexo博客自动发布
记录github action自动部署hexo butterfly
Hexo 自动部署
通過travis-ci或者GitHub Actions自動化部署GitHub Pages和Coding Pages




