auto-releases.yml 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # 当分支 main 有 push 事件并且 tag 为 v* 时触发,使用 GitHub Actions 执行以下步骤:
  2. # 读取 tag 内容,例如 v0.0.12,作为 Releases title
  3. # 读取仓库内的 /doc/guide/changelog.md 和 /doc/guide/changelog_en.md 中第一个二级标题与第二个二级标题之间的内容
  4. # 将两个内容合并为一个字符串,中间使用 --- 分隔
  5. # 组成内容示例为:
  6. # - 新增了一个功能。
  7. # ---
  8. # - Add a new feature.
  9. # 将合并的内容作为 Releases describe
  10. # Set as the latest release 并发布本次 Release
  11. name: Auto releases
  12. on:
  13. push:
  14. branches:
  15. - main
  16. jobs:
  17. releases:
  18. runs-on: ubuntu-latest
  19. steps:
  20. - name: Checkout
  21. - uses: actions/checkout@v2
  22. # 读取最新push的 tag 内容,如果是 v 开头,则往下执行,否则退出
  23. - name: Check tag
  24. run: |
  25. if [[ $GITHUB_REF != 'refs/tags/v'* ]]; then
  26. echo "This is not a tag push. Skipping."
  27. exit 78
  28. fi
  29. # 读取 tag 内容,例如 v0.0.12,作为 Releases title
  30. - name: Get tag
  31. id: tag
  32. run: |
  33. echo tag=${GITHUB_REF#refs/*/} >> $GITHUB_OUTPUT
  34. - name: Setup Node.js environment
  35. uses: actions/setup-node@v1
  36. with:
  37. node-version: 18.x
  38. # 安装 pnpm
  39. - name: Install pnpm
  40. run: |
  41. npm install -g pnpm
  42. # cd 到 .github/workflows 目录下,执行 pnpm install,再执行 node releases.js,生成 releases.md 文件
  43. - name: Install dependencies
  44. run: |
  45. cd .github/workflows
  46. pnpm install
  47. # 读取 releases.md 文件内容,作为 Releases describe
  48. - name: Get body
  49. id: body
  50. run: |
  51. echo body=$(cat releases.md) >> $GITHUB_OUTPUT
  52. # echo ::set-output name=body::$(cat releases.md)
  53. # 作为 latest release 发布本次 Release
  54. - name: Release
  55. uses: actions/create-release@v1
  56. env:
  57. GITHUB_TOKEN: ${{ secrets.STDF_GITHUB_TOKEN }}
  58. with:
  59. tag_name: ${{ steps.tag.outputs.tag }}
  60. release_name: ${{ steps.tag.outputs.tag }}
  61. body: ${{ steps.body.outputs.body }}
  62. draft: false
  63. prerelease: false
  64. # 删除 releases.md 文件
  65. - name: Remove releases.md
  66. run: |
  67. rm releases.md