Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions .github/workflows/merge-release-tag.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Merge Release Tag

on:
push:
tags:
- 'mongosh@[0-9]+.[0-9]+.*'
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can still enforce the 3 components:

Suggested change
- 'mongosh@[0-9]+.[0-9]+.*'
- 'mongosh@[0-9]+\.[0-9]+\.[0-9]+.*'

Though I'm not sure how strict we have to be here - I don't really expect we'll be pushing malformed mongosh@... tags

Copy link
Contributor Author

@gagik gagik Feb 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure escaping is right, this isn't proper regex but confusingly GitHub thing: https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet

workflow_dispatch:

permissions:
contents: none # We use the github app to checkout and push changes

jobs:
merge-release-tag:
runs-on: ubuntu-latest

steps:
- uses: mongodb-js/devtools-shared/actions/setup-bot-token@main
id: app-token
with:
app-id: ${{ vars.DEVTOOLS_BOT_APP_ID }}
private-key: ${{ secrets.DEVTOOLS_BOT_PRIVATE_KEY }}

- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
fetch-depth: "0"
token: ${{ steps.app-token.outputs.token }}

- name: Extract version from tag
uses: actions-ecosystem/action-regex-match@d50fd2e7a37d0e617aea3d7ada663bd56862b9cc
id: version-match
with:
text: ${{ github.ref }}
regex: 'refs/tags/mongosh@([0-9]+\.[0-9]+\.*)'

- name: Validate release version
shell: bash
id: validate
run: |
if [[ -z "${{ steps.version-match.outputs.group1 }}" ]]; then
echo "Error: Could not extract version from tag"
exit 1
fi

if git rev-parse "release/v${{ steps.version-match.outputs.group1 }}" >/dev/null 2>&1; then
echo "Error: Branch release/v$RELEASE_TAG already exists"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

release/ is actually reserved as a prefix for releases we kick off from other release lines (e.g. if we wanted to do a 1.x.x release now, we'd do it from a release/v1.x.x branch) – maybe call this package-release/ or something similar?

echo "If this version has already been released consider using a different one."
exit 1
fi
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems redundant now, since we're not pushing that branch, there's no way for it to exist - is there?

echo "::set-output name=version::${{ steps.version-match.outputs.group1 }}"

- name: Merge release tag into main
run: |
git checkout -b release/v${{ steps.validate.outputs.version }} ${{ github.ref }}
git checkout main
git merge release/v${{ steps.validate.outputs.version }}
git push origin main
2 changes: 1 addition & 1 deletion packages/build/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Execute the following steps to publish a new release:
```
Follow the instructions and verify the inferred release version is correct.
7. Wait for Evergreen to finish the publication stage.
8. The previous step will have pushed tags for the npm publishes. Check out the tag for `mongosh@<version>` (not `v<version>`), create a branch for it, push that branch and open a PR with it. Then immediately merge that branch **using the `git merge` CLI command into main** and push to main. **NEVER** use the Github PR merge functionality, since that would squash the commit and give it a new commit hash that is different from the one in the tag.
8. Ensure that the version bump was automatically merged into main and that it is synced up with the `[email protected]` tag.
9. Close the Jira ticket for the release, post an update in the `#mongosh` Slack channel and ping the docs team.

### Branches and Tags
Expand Down
Loading