Skip to content

Commit 10995f9

Browse files
authored
Merge pull request #145 from RobotWebTools/copilot/fix-release-workflow-trigger
Fix release workflow to verify tag is on main branch before publishing
2 parents e54af07 + 4376cd1 commit 10995f9

File tree

3 files changed

+36
-7
lines changed

3 files changed

+36
-7
lines changed

.github/workflows/release.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,22 @@ jobs:
1111
runs-on: ubuntu-latest
1212
steps:
1313
- uses: actions/checkout@v5
14+
with:
15+
fetch-depth: 0
16+
- name: Verify tag is on main branch
17+
run: |
18+
# Get the commit SHA that the tag points to
19+
TAG_COMMIT=$(git rev-list -n 1 ${{ github.ref }})
20+
echo "Tag commit: $TAG_COMMIT"
21+
22+
# Check if this commit is on the main branch
23+
if ! git branch -r --contains $TAG_COMMIT | grep -q 'origin/main'; then
24+
echo "Error: Tag ${{ github.ref_name }} is not on the main branch"
25+
echo "Releases can only be created from the main branch"
26+
exit 1
27+
fi
28+
29+
echo "Tag is on main branch, proceeding with release"
1430
- name: Set up Python 3.12
1531
uses: actions/setup-python@v5
1632
with:

README.rst

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,23 @@ Ready to release a new version **roslibpy**? Here's how to do it:
131131
* ``major``: backwards-incompatible changes.
132132

133133
* Update the ``CHANGELOG.rst`` with all novelty!
134-
* Ready? Release everything in one command:
134+
* Create a release branch and prepare the release:
135135

136136
::
137137

138+
git checkout -b release-x.y.z
138139
invoke release [patch|minor|major]
139140

140-
* Profit!
141+
* This will run tests, bump the version, create a git tag, and commit changes.
142+
* Push the release branch and tag, then create a Pull Request to ``main``:
143+
144+
::
145+
146+
git push origin release-x.y.z
147+
git push origin --tags
148+
149+
* Once the PR is reviewed and merged into ``main``, the release workflow will automatically publish to PyPI.
150+
* The workflow verifies the tag is on the ``main`` branch before publishing, preventing accidental releases from feature branches.
141151

142152

143153
Credits

tasks.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -179,11 +179,14 @@ def release(ctx, release_type):
179179
# Clean up local artifacts
180180
clean(ctx)
181181

182-
# Upload to pypi
183-
if confirm('Everything is ready. You are about to push to git which will trigger a release to pypi.org. Are you sure? [y/N]'):
184-
ctx.run('git push --tags && git push')
185-
else:
186-
raise Exit('You need to manually revert the tag/commits created.')
182+
log.write('Release preparation complete!')
183+
log.write('Next steps:')
184+
log.write(' 1. Push your release branch: git push origin <branch-name>')
185+
log.write(' 2. Push the tag: git push origin --tags')
186+
log.write(' 3. Create a Pull Request to main')
187+
log.write(' 4. Once merged, the release will be automatically published to PyPI')
188+
log.write('')
189+
log.write('The release workflow will verify the tag is on main before publishing.')
187190

188191

189192
@contextlib.contextmanager

0 commit comments

Comments
 (0)