Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
8 changes: 8 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,14 @@ jobs:

publish:
needs: build
# Publishing happens on merge to main (stable.yml), so this path stays
# off: the tags stable.yml pushes would otherwise start a second upload
# of a version PyPI already has. The build job above still runs on every
# v* tag — it verifies the tag matches pyproject, smoke-tests the wheel
# and attests provenance. To go back to tag-driven releases, register a
# PyPI trusted publisher for release.yml, drop this condition, and put
# stable.yml's publish job back behind `if: ${{ false }}`.
if: ${{ false }}
runs-on: ubuntu-latest
environment:
name: pypi
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/stable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,12 @@ jobs:

publish:
needs: test
# Publishing moved to release.yml: immutable v* tags + Trusted Publishing.
if: ${{ false }}
# Releases ride on merges to main: this job bumps the patch version,
# uploads to PyPI with the PYPI_API_TOKEN secret, then pushes the bump
# commit (marked [skip ci]) and its v* tag. The guard is what keeps it
# off pull requests and the nightly schedule, which the same workflow
# also triggers on — without it every PR would cut a release.
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
permissions:
contents: write
Expand Down
Loading