@@ -156,6 +156,82 @@ jobs:
156156 echo "version=${OUTVER}" >> "${GITHUB_OUTPUT}"
157157 echo "need-release=${PROCEED}" >> "${GITHUB_OUTPUT}"
158158
159+ - name : Parse Version
160+ id : version_parser
161+ uses : step-security/semver-utils@4ae9c1fd6d1c5f8f152fe7e2efe8069a952c2ace # v4.3.2
162+ with :
163+ lenient : false
164+ version : ${{ steps.set-outputs.outputs.version }}
165+
166+ - name : Set Release Environment Variables
167+ run : |
168+ PREMINOR_VERSION=${{ steps.version_parser.outputs.inc-preminor }}
169+ NEXT_VERSION_SNAPSHOT=${PREMINOR_VERSION//-0/-SNAPSHOT}
170+ RELEASE_BRANCH="release/${{ steps.version_parser.outputs.major }}.${{ steps.version_parser.outputs.minor }}"
171+ [[ -z "${{ steps.version_parser.outputs.prerelease }}" ]] && \
172+ VERSION=${{ steps.version_parser.outputs.release }} || \
173+ VERSION="${{ steps.version_parser.outputs.release }}-${{ steps.version_parser.outputs.prerelease }}"
174+ RELEASE_TAG="v${{ steps.set-outputs.outputs.version }}"
175+ cat >> $GITHUB_ENV <<EOF
176+ NEXT_VERSION_SNAPSHOT=$NEXT_VERSION_SNAPSHOT
177+ RELEASE_BRANCH=$RELEASE_BRANCH
178+ RELEASE_TAG=$RELEASE_TAG
179+ VERSION=${{ steps.set-outputs.outputs.version }}
180+ MILESTONE=${{ steps.version_parser.outputs.release}}
181+ EOF
182+
183+ - name : Create and Switch to Release Branch
184+ run : |
185+ if ! git ls-remote --exit-code --heads --quiet origin refs/heads/${RELEASE_BRANCH}; then
186+ git checkout -b ${RELEASE_BRANCH}
187+ git push -u origin ${RELEASE_BRANCH}
188+
189+ # create a PR to bump main branch to the next snapshot version
190+ echo "CREATE_PR=true" >> $GITHUB_ENV
191+ echo "PR_TITLE=chore(release): Bump versions for v$NEXT_VERSION_SNAPSHOT" >> $GITHUB_ENV
192+ else
193+ git checkout ${RELEASE_BRANCH}
194+ fi
195+
196+ - name : Close the Milestone
197+ if : ${{ steps.version_parser.outputs.prerelease == '' }}
198+ id : milestone
199+ uses : step-security/close-milestone@b097272a7aaa0f5c40dc6bc671d45d35c5e85b51 # v2.2.1
200+ with :
201+ milestone_name : ${{ steps.version_parser.outputs.release }}
202+ env :
203+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
204+
205+ - name : Create Release Notes
206+ if : ${{ steps.milestone.outputs.milestone_id != '' }}
207+ uses : step-security/release-notes-generator-action@796ee9c88dd2346ea1a5e9e85ca6cbd1e24e2e6a # v3.2.2
208+ env :
209+ FILENAME : ${{ env.RELEASE_NOTES_FILENAME }}
210+ GITHUB_TOKEN : ${{ secrets.GH_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
211+ MILESTONE_NUMBER : ${{ steps.milestone.outputs.milestone_id }}
212+
213+ - name : Commit and Tag
214+ uses : step-security/git-auto-commit-action@e2d505468267a3cb406af729d48d664de1f16393 # v6.0.2
215+ with :
216+ commit_author : ${{ steps.gpg_importer.outputs.name || vars.GIT_USER_NAME || 'release-automation' }} <${{ steps.gpg_importer.outputs.email || vars.GIT_USER_EMAIL || 'automation@users.noreply.github.com' }}>
217+ commit_message : ' chore(release): Bump versions for ${{ env.RELEASE_TAG }}'
218+ commit_options : ' --no-verify --signoff'
219+ commit_user_name : ${{ steps.gpg_importer.outputs.name || vars.GIT_USER_NAME || 'release-automation' }}
220+ commit_user_email : ${{ steps.gpg_importer.outputs.email || vars.GIT_USER_EMAIL || 'automation@users.noreply.github.com' }}
221+ tagging_message : ${{ env.RELEASE_TAG }}
222+
223+ - name : Create Github Release (draft)
224+ uses : step-security/release-action@03a57407052f15d1537fd5469a6fbbc536aba326 # v1.20.0
225+ with :
226+ bodyFile : ${{ env.RELEASE_NOTES_FILENAME }}.md
227+ commit : ${{ env.RELEASE_BRANCH }}
228+ draft : true
229+ name : ${{ env.RELEASE_TAG }}
230+ omitBody : ${{ steps.milestone.outputs.milestone_id == '' }}
231+ prerelease : ${{ steps.version_parser.outputs.prerelease != '' }}
232+ tag : ${{ env.RELEASE_TAG }}
233+ token : ${{ secrets.GH_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
234+
159235 create-github-release :
160236 name : Github / Release
161237 if : ${{ needs.prepare-release.outputs.need-release == 'true' }}
0 commit comments