1
0

release.yml 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. name: Release
  2. on:
  3. push:
  4. tags:
  5. - 'v[0-9]+.[0-9]+.[0-9]+*'
  6. jobs:
  7. ci:
  8. uses: ./.github/workflows/ci.yml
  9. build:
  10. needs: [ci]
  11. uses: ./.github/workflows/build.yml
  12. secrets: inherit
  13. release:
  14. needs: [build]
  15. runs-on: ubuntu-latest
  16. permissions:
  17. contents: write
  18. steps:
  19. - name: Checkout
  20. uses: actions/checkout@v2
  21. - name: Prepare notes
  22. run: |
  23. # Extract changelog entries between this and previous version headers
  24. escaped_version=$(echo ${GITHUB_REF_NAME#v} | sed -e 's/[]\/$*.^[]/\\&/g')
  25. awk "BEGIN{inrelease=0} /## \[${escaped_version}\]/{inrelease=1;next} /## \[[0-9]+\.[0-9]+\.[0-9]+.*\]/{inrelease=0;exit} {if (inrelease) print}" CHANGELOG.md \
  26. > RELEASE_NOTES.txt
  27. # Write PRERELEASE="true" env if tag name has any suffix after vMAJOR.MINOR.PATCH
  28. if [[ ${GITHUB_REF_NAME} =~ ^v[0-9]+\.[0-9]+\.[0-9]+.+ ]]; then
  29. echo 'PRERELEASE="true"' >> $GITHUB_ENV
  30. else
  31. echo 'PRERELEASE="false"' >> $GITHUB_ENV
  32. fi
  33. - name: Release
  34. uses: softprops/action-gh-release@v1
  35. with:
  36. body_path: RELEASE_NOTES.txt
  37. prerelease: ${{ fromJSON(env.PRERELEASE) }}