name: 发布 GitHub Release on: push: tags: - 'v*' permissions: contents: write jobs: release: runs-on: ubuntu-latest steps: - name: 检出版本源码 uses: actions/checkout@v4 - name: 安装 pnpm uses: pnpm/action-setup@v4 with: version: 12.5.1 - name: 设置 Node.js uses: actions/setup-node@v4 with: node-version: '24' cache: pnpm - name: 核对标签与包版本 run: | version="$(node -p "JSON.parse(require('node:fs').readFileSync('package.json', 'utf8')).version")" if [ "$GITHUB_REF_NAME" != "v$version" ]; then echo "标签 $GITHUB_REF_NAME 与包版本 $version 不一致" >&2 exit 1 fi - name: 安装依赖 run: pnpm install --frozen-lockfile - name: 提取发布说明 run: node scripts/release-notes.mjs > release-notes.md - name: 检查已提交产物 run: node --test test/lib-sync.test.mjs - name: 检查语法 run: pnpm run check - name: 运行测试 run: pnpm test - name: 创建 GitHub Release env: GH_TOKEN: ${{ github.token }} run: gh release create "$GITHUB_REF_NAME" --verify-tag --title "$GITHUB_REF_NAME" --notes-file release-notes.md