From 413ae51185caeb15a5d0e286b0463aabf5eb08bd Mon Sep 17 00:00:00 2001 From: Felipe Suero Date: Thu, 27 Apr 2023 13:03:45 -0400 Subject: [PATCH 1/5] add script --- .github/workflows/publish.yml | 2 ++ script/workflows/generate-release-notes.sh | 31 ++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100755 script/workflows/generate-release-notes.sh diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 17b4347..1636b83 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -42,6 +42,8 @@ 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') + RELEASE_NOTES=$(./scripts/workflows/release-notes.sh $LAST_PR ${{ env.new_version }}) gh pr create \ --title "Release version ${{ inputs.version }}" \ --body "Release version ${{ inputs.version }}" \ diff --git a/script/workflows/generate-release-notes.sh b/script/workflows/generate-release-notes.sh new file mode 100755 index 0000000..d9e7ff3 --- /dev/null +++ b/script/workflows/generate-release-notes.sh @@ -0,0 +1,31 @@ +#!/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 + +echo "Generating release notes for $2" + +# get the last release pull request id +LAST_RELEASE_PR=$1 + +# get the new release number +NEW_RELEASE=$2 + +#get when the last release was merged +LAST_RELEASE_MERGED_AT=$(gh pr view $LAST_RELEASE_PR --repo actions/languageservices --json mergedAt | jq -r '.mergedAt') + +CHANGELIST=$(gh pr list --repo actions/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 + +RELEASE_NOTES="Release $NEW_RELEASE" + +UPDATED=$(echo $CHANGELIST | jq -r '.[].title' | while read line; do + echo " - $line \n"; +done) + +RELEASE_NOTES="$RELEASE_NOTES\n$UPDATED" +echo $RELEASE_NOTES From 5c785ab41b2eac59c5b343e7c53b278b1a77328f Mon Sep 17 00:00:00 2001 From: Felipe Suero Date: Tue, 2 May 2023 13:05:17 -0400 Subject: [PATCH 2/5] merge main in, port changes --- .github/workflows/publish.yml | 4 ++-- script/workflows/generate-release-notes.sh | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 600560b..f61af0a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -52,10 +52,10 @@ 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') - RELEASE_NOTES=$(./scripts/workflows/release-notes.sh $LAST_PR ${{ env.new_version }}) + ./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 index d9e7ff3..958168d 100755 --- a/script/workflows/generate-release-notes.sh +++ b/script/workflows/generate-release-notes.sh @@ -15,17 +15,16 @@ LAST_RELEASE_PR=$1 NEW_RELEASE=$2 #get when the last release was merged -LAST_RELEASE_MERGED_AT=$(gh pr view $LAST_RELEASE_PR --repo actions/languageservices --json mergedAt | jq -r '.mergedAt') +LAST_RELEASE_MERGED_AT=$(gh pr view $LAST_RELEASE_PR --repo github/vscode-github-actions --json mergedAt | jq -r '.mergedAt') -CHANGELIST=$(gh pr list --repo actions/languageservices --base main --state merged --json title --search "merged:>$LAST_RELEASE_MERGED_AT -label:no-release") +CHANGELIST=$(gh pr list --repo github/vscode-github-actions --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 -RELEASE_NOTES="Release $NEW_RELEASE" +echo "Release $NEW_RELEASE" >> releasenotes.md -UPDATED=$(echo $CHANGELIST | jq -r '.[].title' | while read line; do - echo " - $line \n"; -done) +echo $CHANGELIST | jq -r '.[].title' | while read line; do + echo " - $line" >> releasenotes.md +done -RELEASE_NOTES="$RELEASE_NOTES\n$UPDATED" -echo $RELEASE_NOTES +echo " " \ No newline at end of file From 4e1f7cd9ac7db2566b7e302f1497f9100beaa4e4 Mon Sep 17 00:00:00 2001 From: Felipe Suero Date: Tue, 2 May 2023 13:11:19 -0400 Subject: [PATCH 3/5] its important to target the right repo --- script/workflows/generate-release-notes.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/script/workflows/generate-release-notes.sh b/script/workflows/generate-release-notes.sh index 958168d..d575b8b 100755 --- a/script/workflows/generate-release-notes.sh +++ b/script/workflows/generate-release-notes.sh @@ -15,9 +15,9 @@ LAST_RELEASE_PR=$1 NEW_RELEASE=$2 #get when the last release was merged -LAST_RELEASE_MERGED_AT=$(gh pr view $LAST_RELEASE_PR --repo github/vscode-github-actions --json mergedAt | jq -r '.mergedAt') +LAST_RELEASE_MERGED_AT=$(gh pr view $LAST_RELEASE_PR --repo github/languageservice --json mergedAt | jq -r '.mergedAt') -CHANGELIST=$(gh pr list --repo github/vscode-github-actions --base main --state merged --json title --search "merged:>$LAST_RELEASE_MERGED_AT -label:no-release") +CHANGELIST=$(gh pr list --repo github/languageservice --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 From 5362fb18418cc34acc6d5006a493a5229b9d5140 Mon Sep 17 00:00:00 2001 From: Felipe Suero Date: Tue, 2 May 2023 13:11:55 -0400 Subject: [PATCH 4/5] its important to target the right repo --- script/workflows/generate-release-notes.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/script/workflows/generate-release-notes.sh b/script/workflows/generate-release-notes.sh index d575b8b..badb925 100755 --- a/script/workflows/generate-release-notes.sh +++ b/script/workflows/generate-release-notes.sh @@ -15,9 +15,9 @@ LAST_RELEASE_PR=$1 NEW_RELEASE=$2 #get when the last release was merged -LAST_RELEASE_MERGED_AT=$(gh pr view $LAST_RELEASE_PR --repo github/languageservice --json mergedAt | jq -r '.mergedAt') +LAST_RELEASE_MERGED_AT=$(gh pr view $LAST_RELEASE_PR --repo github/languageservices --json mergedAt | jq -r '.mergedAt') -CHANGELIST=$(gh pr list --repo github/languageservice --base main --state merged --json title --search "merged:>$LAST_RELEASE_MERGED_AT -label:no-release") +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 From 41e05b8ad1976820489870a3f0a47113c6d678e8 Mon Sep 17 00:00:00 2001 From: Felipe Suero Date: Tue, 2 May 2023 14:54:11 -0400 Subject: [PATCH 5/5] address nits --- script/workflows/generate-release-notes.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/script/workflows/generate-release-notes.sh b/script/workflows/generate-release-notes.sh index badb925..c75773c 100755 --- a/script/workflows/generate-release-notes.sh +++ b/script/workflows/generate-release-notes.sh @@ -6,13 +6,15 @@ # the script then grabs every pull request merged since that pull request # and outputs a string of release notes -echo "Generating release notes for $2" +# 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 the new release number -NEW_RELEASE=$2 + #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') @@ -27,4 +29,4 @@ echo $CHANGELIST | jq -r '.[].title' | while read line; do echo " - $line" >> releasenotes.md done -echo " " \ No newline at end of file +echo " "