diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b8c82cdb..fcb5578d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -14,3 +14,29 @@ jobs: uses: famedly/frontend-ci-templates/.github/workflows/publish-pub.yml@main with: env_file: ".github/workflows/versions.env" + + create_gh_release: + env: + GH_TOKEN: ${{ github.token }} + needs: [publish] + runs-on: ubuntu-latest + steps: + - name: Create release + run: | + version=$(echo ${{ github.ref_name }} | sed 's/^v//') + releaseRegex="^v[0-9]+\.[0-9]+\.[0-9]+$" + releaseCandidateRegex="^v[0-9]+\.[0-9]+\.[0-9]+rc[0-9]+$" + notes="$(./scripts/extract_changelog.sh $version)" + if [ -z $notes ]; then + if [[ ${{ github.ref_name }} =~ $releaseRegex ]]; then + gh release create ${{ github.ref_name }} --notes $notes -t ${{ github.ref_name }} --verify-tag + elif [[ ${{ github.ref_name }} =~ $releaseCandidateRegex ]]; then + gh release create ${{ github.ref_name }} --notes $notes --prerelease -t ${{ github.ref_name }} --verify-tag + fi + else + if [[ ${{ github.ref_name }} =~ $releaseRegex ]]; then + gh release create ${{ github.ref_name }} --generate-notes -t ${{ github.ref_name }} --verify-tag + elif [[ ${{ github.ref_name }} =~ $releaseCandidateRegex ]]; then + gh release create ${{ github.ref_name }} --generate-notes --prerelease -t ${{ github.ref_name }} --verify-tag + fi + diff --git a/scripts/extract_changelog.sh b/scripts/extract_changelog.sh new file mode 100755 index 00000000..f73f9bd0 --- /dev/null +++ b/scripts/extract_changelog.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +echo "$(awk -v ver=$1 ' + /^(##|###) \[?[0-9]+.[0-9]+.[0-9]+/ { + if (p) { exit }; + if (index($2, "[")) { + split($2, a, "["); + split(a[2], a, "]"); + if (a[1] == ver) { + p = 1 + } + } else { + if ($2 == ver) { + p = 1 + } + } + } p + ' CHANGELOG.md)" \ No newline at end of file