hexo博客自动化部署

平常写blog都在一台电脑上操作,先写完markdown文件,使用hexo的命令 hexo g 生成静态网页,再使用hexo d 发布到github网页仓库上,然后还要将本地blog工程上传到github博客备份仓库。虽然这些步骤已经简化到一个脚本中了。每次只要执行这个脚本就能完成所有流程。但是每次都得在电脑上编写,或者换一台电脑还得重新搭建环境,还是觉得不太方便。就将目光瞄向了github的自动化流程 workflows功能。

自动化流程是命令驱动的,相当于可以在一台虚拟计算机上执行任何允许的操作。查了一下,发现自动化部署是一个早都实现的功能。只需要在blog备份仓库上增加一个流程控制文件 ./github/workflows/deploy.yml

name: Deploy hexo blog

on:
push:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x]

steps:
- uses: actions/checkout@v4

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'

- name: Configuration environment
env:
HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}}
run: |
sudo timedatectl set-timezone "Asia/Shanghai"
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRI" | tr -d '\r' > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name "sunow"
git config --global user.email "sunow@163.com"
- name: Install dependencies
run: |
npm i -g hexo-cli
npm ci
- name: Deploy hexo
run: |
hexo clean
hexo d -g

当然还是需要在blog备份仓库设置私钥,在blog发布仓库设置公钥。

这样每次提交一个文件,到post目录,就能触发自动化部署流程,彻底丢开环境的束缚。

技术使人变懒,能自动的绝不手动。这是一个搞技术的对技术的起码尊重。

文章的开头需要手动填写date和updated字段,这样自动化部署就不会出现排序混乱的问题了。