From 43a8d99d21d07ed5f66adfab83302e385e10ffc1 Mon Sep 17 00:00:00 2001 From: Daniel La Rocque Date: Thu, 16 May 2024 13:25:32 -0400 Subject: [PATCH] Add job to create a GitHub release (#8248) * Add job to create a GitHub release * Add release notes link and header to beginning of release notes * Add link to release notes and custom header --- .github/workflows/release-prod.yml | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/.github/workflows/release-prod.yml b/.github/workflows/release-prod.yml index 6dcedb0b04a..d0c3de16859 100644 --- a/.github/workflows/release-prod.yml +++ b/.github/workflows/release-prod.yml @@ -124,3 +124,35 @@ jobs: curl -X POST -H "Content-Type:application/json" \ -d "{\"version\":\"$BASE_VERSION\",\"date\":\"$DATE\"}" \ $RELEASE_TRACKER_URL/logProduction + - name: Create Github release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # Get the newest release tag for the firebase package (e.g. firebase@10.12.0) + NEWEST_TAG=$(git describe --tags --match "firebase@[0-9]*.[0-9]*.[0-9]*" --abbrev=0) + + # Get the release notes from the description of the most recent merged PR into the "release" branch + # See: https://github.com/firebase/firebase-js-sdk/pull/8236 for an example description + JSON_RELEASE_NOTES=$(gh pr list \ + --repo "$GITHUB_REPOSITORY" \ + --state "merged" \ + --base "release" \ + --limit 1 \ + --json "body" \ + | jq '.[].body | split("\n# Releases\n")[-1]' # Remove the generated changesets header + ) + + # Prepend the new release header + # We have to be careful to insert the new release header after a " character, since we're + # modifying the JSON string + JSON_RELEASE_NOTES="\"For more detailed release notes, see [Firebase JavaScript SDK Release Notes](https://firebase.google.com/support/release-notes/js).\n\n# What's Changed\n\n${JSON_RELEASE_NOTES:1}" + + # Format the JSON string into a readable markdown string + RELEASE_NOTES=$(echo -E $JSON_RELEASE_NOTES | jq -r .) + + # Create the GitHub release + gh release create "$NEWEST_TAG" \ + --repo "$GITHUB_REPOSITORY" \ + --title "$NEWEST_TAG" \ + --notes "$RELEASE_NOTES" \ + --verify-tag