Releases: pypa/gh-action-pypi-publish
v1.12.3
✨ What's Improved
With the updates by @woodruffw💰 and @webknjaz💰 via #309 and #313, it is now possible to publish distribution packages that include core metadata v2.4, like those built using maturin. This is done by bumping Twine
to v6.0.1 and pkginfo
to v1.12.0.
📝 Docs
We've made an attempt to clarify the runtime and workflow shape that are expected to be supported for calling this action in: https://github.com/marketplace/actions/pypi-publish#Non-goals.
Tip
Please, let us know in the release discussion if anything still remains unclear.
TL;DR always call pypi-publish
once per job; don't invoke it in reusable workflows; physically move building the dists into separate jobs having restricted permissions and storing the dists as GitHub Actions artifacts; when using self-hosted runners, make sure to still use pypi-publish
on a GitHub-provided infra with runs-on: ubuntu-latest
, while building and testing may remain self-hosted; don't perform any other actions in the publishing job; don't call pypi-publish
from composite actions.
🛠️ Internal Updates
@br3ndonland💰 improved the container image generation automation to include Git SHA in #301. And @woodruffw💰 added the workflow_ref
context to Trusted Publishing debug logging in #305, helping us diagnose misconfigurations faster. #313 also extends the smoke test in the CI to check against the maturin-made dists. Additionally, jeepney
and secretstorage
transitive deps have been added to the pip constraint-based lock file, as Dependabot seems to have missed those earlier.
🪞 Full Diff: v1.12.2...v1.12.3
🧔♂️ Release Manager: @webknjaz 🇺🇦
🙏 Special Thanks to @samuelcolvin💰 for nudging me to cut this release sooner and for sponsoring me via @pydantic💰!
🔌 Shameless Plug: The other day I've made this 🦋 Bluesky 🇺🇦 FOSS Maintainers Starter Pack subscribe to read news from people like me :)
💬 Discuss on Bluesky 🦋, on Mastodon 🐘 and on GitHub.
v1.12.2
🐛 What's Fixed
The fix for signing legacy zip sdists turned out to be incomplete, so @woodruffw💰 promptly produced another follow-up that updated pypi-attestations
from v0.0.13 to v0.0.15 in #297. This is the only change since the previous release.
🪞 Full Diff: v1.12.1...v1.12.2
v1.12.1
🐛 What's Fixed
Version v1.12.0 hit several rare corner cases we never considered fully supported, and this release fixes a few of those.
In #294, @webknjaz💰 improved the self-hosted runner experience by pre-installing Python if it's not there, and with #293 the ability to use the action on GitHub Enterprise instances has been restored. The latter should've also fixed the ability to invoke pypi-publish
from nested in-repo composite actions — another exotic use-case that was never tested in our CI.
@woodruffw💰 also managed to squeeze in a last-minute fix for detecting legacy .zip
sdists while producing attestations via #295.
🪞 Full Diff: v1.12.0...v1.12.1
🧔♂️ Release Manager: @webknjaz 🇺🇦
🙏 Huge Thanks to all the bug reporters for posting the logs, helping inspect the problems and verify the regression fixes!
v1.12.0
⚡️ Why Should You Update?
This is a minor version bump, but it does not add any new user-facing interfaces. Still, I felt like it should not be a patch-release: this update brings significant changes to the action invocation and internal release process.
Previously, each invocation of pypi-publish
required building a container image in the invoking CI job. This was inefficient and added about 30 seconds to the publishing jobs at their startup just to build the container.
I wanted to improve this for over three years (#58) and a little over half a year ago @br3ndonland💰 stepped up and offered a very comprehensive solution to the limitation I was hoping to overcome: #230.
Going forward, I'm going to pre-build per-version containers prior to cutting each release. And the action invocations will just pull the image from GitHub Container registry.
Caution
Known quirks:
- This seems to not work on self-hosted runners without a
python
executable: #289. The workaround could be installing it prior to running the action. Pinning to commit hashes does not work: #290. Workaround: postpone updating until it's fixed or switch to Git tags for now. Subscribe to that issue to follow the progress.UPD: This was an issue during the first 12 hours post release and it has been addressed upstream by publishing a commit SHA-tagged image for the release on Nov 12, 2024 at 10:27 UTC+1.- Calling
pypi-publish
from another nested repo-local composite action might be breaking file paths: #291. Workaround: postpone updating until it's fixed. Subscribe to that issue to follow the progress. - Running within GitHub Enterprise fails on the action repo clone: #292. Workaround: postpone updating until it's fixed. Subscribe to that issue to follow the progress.
🪞 Full Diff: v1.11.0...v1.12.0
🧔♂️ Release Manager: @webknjaz 🇺🇦
v1.11.0
🔏 Helping you become a trusted supply chain link 🔗
Two months ago, in v1.10.0, @woodruffw💰 integrated support for generating and uploading PEP 740 digital attestations that can be used as provenance objects when analyzing dependency chains for the integrity.
To make sure it works well, it was implemented as an opt-in, so a relatively small subset of projects was able to try it out, and a few issues have been determined and fixed during this time.
That changes today! This version changes the feature toggle to “on by default”. This means that from now on, every project making use of Trusted Publishing will start producing and publishing digital attestations without having to do any modifications to how they use this action.
@woodruffw💰 flipped the respective toggle in #277 with the possibility to opt-out.
🛠️ Internal Dependencies
@woodruffw💰 bumped sigstore
to v3.5.1 and pypi-attestations
to v0.0.13 in lock files via #276.
🪞 Full Diff: v1.10.3...v1.11.0
🧔♂️ Release Manager: @webknjaz 🇺🇦
🙏 Special Thanks to William for working on improving the supply chain provenance in the ecosystem! The overall effort is tracked @ pypi/warehouse#15871.
v1.10.3
💅 Cosmetic Output Improvements
In #270, @facutuesca💰 made a follow-up to their previous PR #250, making the hints show up more granularly. This effectively makes sure that the suggestion to enable Trusted Publishing does not get displayed when it's already in use. It also makes the message nicer in a few places on the UI.
🛠️ Internal Dependencies
@mosfet80💰 updated a few internal linter versions in #266, #267, and #271, no user impact. This is usually automated otherwise.
💪 New Contributors
🪞 Full Diff: v1.10.2...v1.10.3
🧔♂️ Release Manager: @webknjaz 🇺🇦
v1.10.2
💅 Cosmetic Output Improvements
In #250 and #258, @facutuesca💰 added a nudge message with a magic link to pre-fill the creation of new Trusted Publishers configurations on PyPI. The users are now suggested to configure tokenless publishing by clicking a link printed in the job summary when it's detected that they publish to PyPI or TestPyPI. Just like magic! 🦄
🛠️ Internal Dependencies
@woodruffw💰 bumped pypi-attestations
to v0.0.12 in #262, fixing #263.
Tip
Please keep in mind that reusable workflows are not yet supported, even though they sometimes work, mostly by accident.
💪 New Contributors
@facutuesca made their first contribution in #258
🪞 Full Diff: v1.10.1...v1.10.2
🧔♂️ Release Manager: @webknjaz 🇺🇦
🙏 Special Thanks to @henryiii💰 for promptly pointing up possible fixes for #263.
v1.10.1
🚑🔏 Oopsie... We missed a tiny bug in the attestations feature the other day
The problem was that the distribution file validity check was failing on any valid distribution being present and ready to be signed. What a silly mistake! It's now been fixed via 0ab0b79, though. So everything's good!
Important
✨ Despite this minor hiccup, we invite you to still opt into trying this feature out early. It can be enabled like this:
with:
attestations: true
Leave feedback in the v1.10.0 release discussion or the PR.
🪞 Full Diff: v1.10.0...v1.10.1
🧔♂️ Release Manager: @webknjaz 🇺🇦
🙏 Special Thanks to @hugovk💰 for promptly validating the bug fix, mere minutes after I pushed it — I even haven't finished writing this text by then!
v1.10.0
🔏 Anything fancy, eh?
This time, @woodruffw💰 implemented support for PEP 740 attestations functionality in #236 and #245. This is a big deal, as it is a huge step forward to replacing what the deprecated GPG signatures used to provide in a more meaningful way.
Important
✨ Please, do opt into trying this feature out early. It can be enabled as follows:
with:
attestations: true
Leave any feedback on this in this release discussion or the PR.
🙏 And please, thank William for working on this amazing improvement for the ecosystem! The overall effort is tracked @ pypi/warehouse#15871, by the way.
🪞 Full Diff: v1.9.0...v1.10.0
🧔♂️ Release Manager: @webknjaz 🇺🇦
v1.9.0
💅 Cosmetic Output Improvements
- @woodruffw💰 updated the tense on password nudge in #234
- @shenxianpeng💰 helped us disable the progress bar that was being produced by the
twine upload
command via #231 - @woodruffw💰 also linked the PyPI status dashboard in the trusted publishing error message via #243
🛠️ Internal Dependencies
- pre-commit linters got auto-updated @ #225
- some notable dependency bumps include
⚙️ Secret Stuff
In #241, @br3ndonland💰 added a Docker label linking the container image to this repository for GHCR to display it nicely. This is preparatory work for a big performance-focused refactoring he's working on in #230.
💪 New Contributors
- @shenxianpeng made their first contribution in #231
- @br3ndonland made their first contribution in #241
🪞 Full Diff: v1.8.14...v1.9.0
🧔♂️ Release Manager: @webknjaz 🇺🇦
🙏 Special Thanks to @pradyunsg💰 for promptly unblocking this release to Marketplace as GitHub started asking for yet another developer agreement signature from the organization admins.