diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 75bd962..f61af0a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -51,9 +51,11 @@ jobs: - name: Create PR run: | + LAST_PR=$(gh pr list --repo ${{ github.repository }} --limit 1 --state merged --search "Release version" --json number | jq -r '.[0].number') + ./script/workflows/generate-release-notes.sh $LAST_PR ${{ env.new_version }} gh pr create \ --title "Release version ${{ env.new_version }}" \ - --body "Release version ${{ env.new_version }}" \ + --body-file releasenotes.md \ --base main \ --head release/${{ env.new_version }} env: diff --git a/script/workflows/generate-release-notes.sh b/script/workflows/generate-release-notes.sh new file mode 100755 index 0000000..c75773c --- /dev/null +++ b/script/workflows/generate-release-notes.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# this script is used to generate release notes for a given release +# first argument is the pull request id for the last release +# the second is the new release number + +# the script then grabs every pull request merged since that pull request +# and outputs a string of release notes + +# get the new release number +NEW_RELEASE=$2 + +echo "Generating release notes for $NEW_RELEASE" + +# get the last release pull request id +LAST_RELEASE_PR=$1 + + + +#get when the last release was merged +LAST_RELEASE_MERGED_AT=$(gh pr view $LAST_RELEASE_PR --repo github/languageservices --json mergedAt | jq -r '.mergedAt') + +CHANGELIST=$(gh pr list --repo github/languageservices --base main --state merged --json title --search "merged:>$LAST_RELEASE_MERGED_AT -label:no-release") + +# store the release notes in a variable so we can use it later + +echo "Release $NEW_RELEASE" >> releasenotes.md + +echo $CHANGELIST | jq -r '.[].title' | while read line; do + echo " - $line" >> releasenotes.md +done + +echo " "