name: 自动部署 on: push: branches: - master release: types: - published workflow_dispatch: env: TZ: Asia/Shanghai jobs: # Job 1: 检查代码并缓存依赖 check_and_cache: runs-on: ubuntu-latest steps: # 检查分支 - name: 检查分支 uses: actions/checkout@v5 with: ref: master token: ${{ secrets.GITHUB_TOKEN }} # 缓存 npm 包 - name: 缓存项目 npm 包 id: cache-node-modules uses: actions/cache@v4 with: path: node_modules key: ${{ runner.os }}-nodeModules-${{ hashFiles('package-lock.json') }} restore-keys: | ${{ runner.os }}-nodeModules- # Job 2: 安装依赖和清理构建 install_and_clean: runs-on: ubuntu-latest needs: check_and_cache steps: # 安装 Node 及 Hexo - name: 安装 Node 和 Hexo run: | echo "安装 Node.js 版本 22.x" npm install hexo-cli --global npm install || echo "依赖安装失败" # 清理文件树 - name: 清理文件树 run: | npm run clean # Job 3: 生成静态文件 build: runs-on: ubuntu-latest needs: install_and_clean steps: # 生成静态文件并压缩 - name: 生成静态文件并压缩 run: | npm run build # Job 4: 部署到 GitHub Pages deploy_to_github: runs-on: ubuntu-latest needs: build steps: - name: 部署静态文件到 GitHub Pages run: | echo "开始部署到 GitHub page" cd ./public git init git config user.name "${{ github.actor }}" git config user.email "${{ github.actor }}@users.noreply.github.com" git add . git commit -m "${{ github.event.head_commit.message }} · [${{ github.sha }}] · $(date +"%Y-%m-%d %H:%M:%S")" # 将静态文件推送到指定的 Pages 仓库和 gh-pages 分支 git push --force --quiet "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/bishshi/pages.git" master