利用git action自动化部署hexo

hexo虽然有git-deploy插件, 但是这一点都不优雅!也不方便, 你本地还是需要安装所有的依赖才行。

所以这里我们使用git action, 完成自动化部署,只需要提交commit之后,git自动就会完成部署博客

前提

  • 已经创建blog仓库存放Hexo项目
  • 已经创建your.github.io仓库存放静态页面

具体步骤

生成部署密钥

$ ssh-keygen -f github-deploy-key

一直回车。会在当前目录生成2个文件, github-deploy-keygithub-deploy-key.pub

配置部署密钥

复制 github-deploy-key 文件内容,在 blog 仓库 `Settings -> Secrets -> New repository secret 页面上添加。

  1. Name填入HEXO_DEPLOY_KEY

  2. Value填入github-deploy-key文件的内容

复制 github-deploy-key.pub 文件内容,在 your.github.io 仓库 Settings -> Deploy keys -> Add deploy key 页面上添加。

  1. Title 输入框填写 HEXO_DEPLOY_PUB
  2. Key 输入框填写 github-deploy-key.pub 文件内容。
  3. 勾选 Allow write access 选项。

编写Gtihub Actions

blog仓库根目录下创建.github/workflows/deploy.yml文件

deply.yml中粘贴以下内容

name: Hexo Deploy

on:
push:
branches:
- master

jobs:
build:
runs-on: ubuntu-18.04
if: github.event.repository.owner.id == github.event.sender.id

steps:
- name: Checkout source
uses: actions/checkout@v2
with:
ref: master

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: '14.16'

- name: Setup Hexo
env:
ACTION_DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY_KEY }}
run: |
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.email "your@email.com"
git config --global user.name "your_name"
npm install hexo-cli -g
npm install
# install pandoc
curl -s -L https://github.com/jgm/pandoc/releases/download/2.7.3/pandoc-2.7.3-linux.tar.gz | tar xvzf - -C $RUNNER_TOOL_CACHE/

- name: Deploy
run: |
# add pandoc to PATH
export PATH="$PATH:$RUNNER_TOOL_CACHE/pandoc-2.7.3/bin"
hexo clean
hexo deploy

这里因为博客用到pandoc,之前不安装测试的时候一直部署不成功,这里在安装依赖之后安装pandoc