release.yml 1.0 KB

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