-
Notifications
You must be signed in to change notification settings - Fork 65
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add workflow for creating release PR's (#360)
Add a workflow for creating release PR's. This way we don't have to do it locally, and we guarantee the `npm` version used to generate the version bump is consistent and stays in-sync with the repo instead of whatever the dev happened to have on their local computer.
- Loading branch information
1 parent
c40140b
commit 6c5b8c2
Showing
3 changed files
with
91 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
name: Release - Bump Version | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
version_type: | ||
description: "Version Type?" | ||
required: true | ||
type: choice | ||
options: | ||
- major | ||
- minor | ||
- patch | ||
default: "minor" | ||
|
||
jobs: | ||
Create-PR-To-Bump-Fetch-Metadata-Version: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
# Ensure we start from main in case the workflow is run from a branch | ||
ref: "main" | ||
token: ${{ secrets.DEPENDABOT_AUTOMATION_PAT }} | ||
|
||
- uses: actions/setup-node@v3 # bin/bump-version needs npm | ||
with: | ||
node-version-file: .nvmrc | ||
|
||
- name: Bump the version | ||
# Currently we don't run via `schedule` trigger since this repo isn't active enough. | ||
# However, if that ever changes, it will run with no inputs, so version_type will default to 'minor' | ||
run: | | ||
NEW_VERSION=$(bin/bump-version ${{ github.event.inputs.version_type || 'minor' }}) | ||
echo "New version is: $NEW_VERSION" | ||
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV | ||
- name: Configure the git user | ||
run: | | ||
git config user.name "github-actions[bot]" | ||
# Specifying the full email allows the avatar to show up: https://github.com/orgs/community/discussions/26560 | ||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | ||
- name: Create a branch and commit the changes | ||
run: | | ||
# Using an idempotent branch name ensures no duplicate PR's are created | ||
# if the action is re-run before the previous PR is merged. | ||
# The branch name is purposefully different from the release tag to | ||
# avoid ambiguity when selecting git refs. | ||
git checkout -b "bump-to-${{ env.NEW_VERSION }}" | ||
git add package.json package-lock.json | ||
echo "Creating commit / PR linking to the releases notes URL." | ||
echo "This URL will 404 until the release is actually tagged, which you should do as soon as the PR is merged." | ||
git commit -m "${{ env.NEW_VERSION }}" -m "Release notes: https://github.com/${{ github.repository }}/releases/tag/${{ env.NEW_VERSION }}" | ||
- name: Push the branch | ||
run: | | ||
echo "Pushing branch to remote. If this fails, check if a branch/PR already exists for this version." | ||
git config push.autoSetupRemote true | ||
git push | ||
- name: Create a PR from the branch with the commit | ||
run: | | ||
PR_URL=$(gh pr create --fill) # `fill` re-uses the title / body from the commit | ||
echo "PR created at URL: $PR_URL" | ||
echo "PR_URL=$PR_URL" >> $GITHUB_ENV | ||
env: | ||
GH_TOKEN: ${{ secrets.DEPENDABOT_AUTOMATION_PAT }} | ||
|
||
- name: Set summary | ||
run: | | ||
echo ":rocket: PR created at URL: ${{ env.PR_URL }}" >> $GITHUB_STEP_SUMMARY | ||
echo "" >> $GITHUB_STEP_SUMMARY | ||
echo "After the PR is approved/merged, create a new release tagged as \`${{ env.NEW_VERSION }}\`, _making sure to point it at the merge commit_:" >> $GITHUB_STEP_SUMMARY | ||
echo "* You can do this via the web UI - use the \`Generate release notes\` button and then edit as needed: https://github.com/${{ github.repository }}/releases/new?tag=${{ env.NEW_VERSION }}&title=${{ env.NEW_VERSION }}" >> $GITHUB_STEP_SUMMARY | ||
echo "* Or via the GitHub CLI:" >> $GITHUB_STEP_SUMMARY | ||
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY | ||
echo " gh release create ${{ env.NEW_VERSION }} --title ${{ env.NEW_VERSION }} --generate-notes --draft" >> $GITHUB_STEP_SUMMARY | ||
echo " > https://github.com/${{ github.repository }}/releases/tag/untagged-XXXXXX" >> $GITHUB_STEP_SUMMARY | ||
echo " # Use the generated URL to review/edit the release notes." >> $GITHUB_STEP_SUMMARY | ||
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY | ||
echo "Once the release is tagged, move the floating \`v1\` tag to point at this release." >> $GITHUB_STEP_SUMMARY |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters