利用 github action 可以实现在线编辑博文,自动发布到博客的操作。
而在本地编写,也能省下hexo clean && hexo g && hexo d && hexo a
这样的操作,只需要通过 vs code 点击一下commit
和push
即可
本文记录相关操作,使用基于shoka
主题的hexo
,其他主题请根据自己情况修改
# 建立发布仓库
注意!这里建立的不是用于博客展示的 public 仓库,而是包含整个 hexo 代码的工作仓库
因为这个仓库中包含了一些敏感的配置文件,务必注意建立私有
仓库
# 在 github 建立私有仓库
点击右上角的
+
号,随后点击New repository
编辑
Repository name
,勾选Private
,最后点击Create repository
创建完毕后应当跳转至如下页面,保留这个页面,红框中的内容后面用的到
# 关联本地仓库到远程仓库
建议先了解基础知识,可以浏览我之前写的 Git 基础教程
这里默认已经完成所有 hexo 的配置步骤,各插件的配置正常(valine,algonia 等),确定已经可以在本地直接将博文发布至 github pages
,且一切正常。
如果你也使用 shoka主题
,可以先看我的基础篇系列
配置本地 hexo 根目录下的
.gitignore
,添加 node_modules / 和 public / 这两行(如果已经有了的话就不用加)在本地 hexo 的根目录下执行如下命令:
orgin 后面的内容就是创建完私有仓库后,我标记的红框中的内容
注意更换为自己的仓库 ssh 链接
git remote add origin git@github.com:moehz/hexo-backend.git |
- push 到远程仓库
git push -u origin master |
# 配置 github action
# 配置密钥
点击
Settings
-->Screts
-->New repository secret
填写发布所需的私钥,命名为
HEXO_DEPLOY_PRIVATE_KEY
最后点击
Add secret
, 页面自动跳转后应该可以看到自己添加的key
# 配置 workflow
- 在仓库中点击
Actions
-->set up workflow yourself
来创建 workflow - 将 workflow 中的默认配置全部删除,更换为如下内容:
如果你用的是 shoka 主题,那么只需要修改全局账号以及邮箱
如果你用的不是 shoka 主题,还需要根据自己的情况修改其他配置
# workflow name | |
name: Hexo Blog CI | |
# master branch on push, auto run | |
on: | |
push: | |
branches: | |
- master | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
# check it to your workflow can access it | |
# from: https://github.com/actions/checkout | |
- name: Checkout Repository master branch | |
uses: actions/checkout@master | |
# from: https://github.com/actions/setup-node | |
- name: Setup Node.js 12.x | |
uses: actions/setup-node@master | |
with: | |
node-version: "12.x" | |
- name: Setup Hexo Dependencies | |
run: | | |
npm install hexo-cli -g | |
npm install | |
npm un hexo-renderer-marked --save | |
npm i hexo-renderer-multi-markdown-it --save | |
npm install hexo-autoprefixer --save | |
npm install hexo-algoliasearch --save | |
npm install hexo-symbols-count-time | |
npm install hexo-feed --save-dev | |
- name: Setup Deploy Private Key | |
env: | |
HEXO_DEPLOY_PRIVATE_KEY: $<!--swig0--> | |
run: | | |
mkdir -p ~/.ssh/ | |
echo "$HEXO_DEPLOY_PRIVATE_KEY" > ~/.ssh/id_rsa | |
chmod 600 ~/.ssh/id_rsa | |
ssh-keyscan github.com >> ~/.ssh/known_hosts | |
- name: Setup Git Infomation | |
run: | | |
git config --global user.name 'xxx' | |
git config --global user.email 'xxx@xxx.com' | |
- name: Deploy Hexo | |
run: | | |
hexo clean | |
hexo generate | |
hexo deploy | |
hexo a |
修改后,点击
Start commit
-->Commit new file
配置完后会立即自动运行,然后可以看一下
Action
的运行情况,这里以我完成配置的仓库为例
成功的话,红框中会显示绿色的勾,可以点击Create main.yml
查看详细情况
这里可以看到 build 的状态,以及执行的时间等,继续点击 build
这里可以看到 build 时的全部日志,如果失败,可以在这里看一下哪里出了问题
# 使用
到这里就完成了全部配置,下面讲一些使用上的经验
# 网页编辑文章
跟本地一样,直接在库里的 source/_posts
目录下中新建或者编辑博文,最后 commit
,然后 action
就会自动运行帮你发布
# 本地使用
这里我使用的是 vscode
,你也可以用别的 IDE 方便操作。
只需要在软件里点击 commit
, 然后 push
就行,后面 action
会帮你处理好一切
- commit and push
- 打开
github action
,可以看到已经在自动执行了