release.yml 1.1 KB

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