使用github workflow自动更新博客
目录
原来更新博客的步骤
- 格式化检查、生成信息页面
- 打包
- 移动图片到打包目录
- rsync 复制到服务器
workflow 文件解析
yml
name: Deploy Blog
run-name: ${{ github.actor }} updated the blog
on:
push:
paths:
# 仅当docs中的文件更新时才会触发构建
- "docs/**"
jobs:
update-blog:
# 使用基于Ubuntu的虚拟机
runs-on: ubuntu-latest
steps:
# 获取代码
- name: Checkout repository
uses: actions/checkout@v3
# 设置SSH免密登陆
- name: Setup SSH
env:
BLOGUPDATER_SSH: ${{ secrets.BLOGUPDATER_SSH }}
run: |
mkdir -p ~/.ssh
echo "$BLOGUPDATER_SSH" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -H truraly.fun >> ~/.ssh/known_hosts
ssh user@truraly.fun "neofetch"
# 构建项目
- name: Build project
uses: actions/setup-node@v4
with:
node-version: "22.x"
- run: |
npm i pnpm -g
pnpm install
node ./js/tags.js # 添加tag页
node ./js/addTimeLine.js # 添加时间线
node ./js/count.js # 统计知识库情况
npm run build # 打包
cp docs/openjsf.png dist/
cp docs/logo.png dist/
# 上传到服务器
# 请确保/wwww/blogs/目录已经存在并且blogupdater用户有写权限
- name: Deploy with rsync
run: |
ssh user@truraly.fun "ls -dal /www/blogs/"
rsync -avzh --delete -partial --bwlimit=1024 ./dist user@truraly.fun:/www/blogs/
github 提供一个临时的虚拟机用来运行脚本,run 后面可以用 shell 命令
参考资料: