Github Action 部署 Hexo
更新
2022-09-13
TypeError: Object.fromEntries is not a function
更新了新版的 hexo to 6.3.0
,Github 上的 Action 脚本也要更新下更新到 node 10.x to node 14.x
2020-12-13
update。Error: Process completed with exit code 1
也是听说 github action 想试试,发现竟然可以直接部署 hexo,这样的话就解决了 hexo 版本控制的问题。下面来尝试一下吧,基本上参考这一篇文章来操作的使用 github action 发布 hexo。
准备工作
准备两个仓库,如下:
仓库 | 说明 |
---|---|
blog | hexo 项目,存放博客源码的地方 |
xxxx.gitub.io | hexo 编译后的静态文件,即博客 |
原理基本上是这样的。blog 仓库
推送之后激活 github action,然后在 action 里执行 hexo d
命令就可以了,当然事先要在 blog 仓库
设置好相应的静态仓库地址 xxxx.github.io
。
配置密钥
ssh-keygen -f github-hexo-deploy-key
此命令会生成 github-hexo-deploy-key 私钥 和 github-hexo-deploy-key.pub 公钥。
配置 blog 项目
github 打开 blog 仓库
=> settings => secrets => add new secrets
- Name 名字随便起,但是要记住,后面有用,例如:HEXO_DEPLOY_SECRETS
- Value 输入
github-hexo-deploy-key
私钥的内容
配置 xxxx.gitub.io 项目
github 打开 xxxx.gitub.io 仓库
=> settings => keys => add deploy key
- Title 名字随便起,但是要记住,例如: HEXO_DEPLOY_PUB
- Key 输入
github-hexo-deploy-key.pub
公钥的内容
github action
打开 blog 仓库
=> Actions => Set up this workflow,内容如下,可做参考:
name: HEXO CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x]
steps:
- uses: actions/checkout@v1 # 检出代码
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Configuration environment
env:
HEXO_DEPLOY_SECRETS: ${{secrets.HEXO_DEPLOY_SECRETS}} # blog 项目内新增的 secrets key
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_SECRETS" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name "xxxx" #git name
git config --global user.email "xxxx@mail.com" #git account
git clone https://github.com/xxxx/hexo-theme-icarus.git themes/icarus --depth 1 # 主题仓库
- name: Install dependencies
run: |
npm i -g hexo-cli
npm i
- name: Deploy hexo
run: |
hexo g -d
完成
虽然看原文也不是很懂最重要的 action 代码部分,但是还是摸索出来了,用起来还真是方便。唯一的缺点就是 xxxx.gitub.io 仓库
永远只有两个commit,也就是每次都是覆盖更新,不保留任何修改记录,不过还好,blog 仓库
已经记录了所有的改动。
问题
2020-12-13
update。运行了几个月竟然这两天突然出现action执行错误直接返回 getaddrinfo https://github.com: Name or service not known 15 Error: Process completed with exit code 1.
还是自己一顿乱试,竟然解决了。
删掉work flow file代码中的这个地方
# 改
ssh-keyscan https://github.com >> ~/.ssh/known_hosts
# 变成
ssh-keyscan github.com >> ~/.ssh/known_hosts