使用github workflow自动更新博客 
目录
概要 
原来更新博客的步骤
- 格式化检查、生成信息页面
- 打包
- 移动图片到打包目录
- rsync 复制到服务器
更新后的步骤
- 写完提交 git push 就行
方法 
- 在项目的根目录下创建一个 .github/workflows/blog.yml文件
- 在项目的 github 页面点击settings-Security-Action新建一个密钥(用于 SSH 登陆服务器)
- 编写 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 命令
