@@ -124,3 +124,35 @@ jobs:
124124 curl -X POST -H "Content-Type:application/json" \
125125 -d "{\"version\":\"$BASE_VERSION\",\"date\":\"$DATE\"}" \
126126 $RELEASE_TRACKER_URL/logProduction
127+ - name : Create Github release
128+ env :
129+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
130+ run : |
131+ # Get the newest release tag for the firebase package (e.g. firebase@10.12.0)
132+ NEWEST_TAG=$(git describe --tags --match "firebase@[0-9]*.[0-9]*.[0-9]*" --abbrev=0)
133+
134+ # Get the release notes from the description of the most recent merged PR into the "release" branch
135+ # See: https://github.com/firebase/firebase-js-sdk/pull/8236 for an example description
136+ JSON_RELEASE_NOTES=$(gh pr list \
137+ --repo "$GITHUB_REPOSITORY" \
138+ --state "merged" \
139+ --base "release" \
140+ --limit 1 \
141+ --json "body" \
142+ | jq '.[].body | split("\n# Releases\n")[-1]' # Remove the generated changesets header
143+ )
144+
145+ # Prepend the new release header
146+ # We have to be careful to insert the new release header after a " character, since we're
147+ # modifying the JSON string
148+ 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}"
149+
150+ # Format the JSON string into a readable markdown string
151+ RELEASE_NOTES=$(echo -E $JSON_RELEASE_NOTES | jq -r .)
152+
153+ # Create the GitHub release
154+ gh release create "$NEWEST_TAG" \
155+ --repo "$GITHUB_REPOSITORY" \
156+ --title "$NEWEST_TAG" \
157+ --notes "$RELEASE_NOTES" \
158+ --verify-tag
0 commit comments