-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Automate build and release to PyPI #7390
Comments
This sounds like a great step. |
Love it!! |
I've created #7418 for 1. |
I've opened #7544 to create the sdist during the release build. Next, I'd like us to move the Windows wheel building from So we get something like this: And the Windows wheels should be part of the same I think we also probably want to use a reusable workflow, similar to We don't need to build the wheels anymore in This doesn't all need to be done in one go, incremental steps are fine, as long as they're atomic changes and we're still able to make releases during any intermediate step. Any thoughts on how to approach this? cc @nulano After all this is done, we have all* the release files created in one place on the CI, and do the upload to PyPI! But one step at a time :) (* All the GHA files, not Travis CI, which will still need manual upload, but they should be ready before all the automation.) |
Sounds good! When the time comes, we can ask around for someone to test the ARM64 wheels :) |
I've since realized that I can borrow a relative's M2 MacBook to test the wheels. |
#7616 has now been merged. @aclark4life could you go to https://pypi.org/manage/project/pillow/settings/publishing/ and add a publisher? Owner: python-pillow |
@aclark4life Please can you also set up an environment named |
@radarhere @hugovk Thanks and done, I think! The env |
Thanks, the publisher looks good!
@aclark4life What settings does it have? @radarhere What settings should it have? |
The publisher looks good to me, thanks. The details I mentioned were the only ones I added. |
So when releasing, after pushing the tag, the CI will begin, build the sdist and all the wheels, and somehow put them in an environment? How does that look? What's the next step to upload to PyPI? |
Probably need a testpypi release first. |
When I was using Test PyPI in #7616, once sdist and the wheels were built, the action uploaded them, and that was it. https://github.com/radarhere/Pillow/actions/runs/7329629479/job/19960359962#step:4:1008 I presume that Test PyPI works the same way as real PyPI. I would have imagined that real PyPI releases don't rely on test PyPI to go first, since we've been ignoring test PyPI for every previous release we've done. |
Okay, so the environment isn't doing anything. Anyway, I'm excited for the next release! @radarhere Please will you update https://github.com/python-pillow/Pillow/blob/main/RELEASING.md? It can wait until after doing the release if you like. |
Sure. I've created #7652 |
The tagged "Upload release to PyPI" ran smoothly in the Pillow 10.2.0 release. With that, is this completed? |
Great to hear it went smoothly! Before closing this issue, we still have Travis to automate. Shall we try my suggestion at #7485 (comment) to upload to PyPI directly from Travis? |
Sure, sounds good if it works. |
Plan C: please see PR #7690 to replace Travis native builds with GHA emulated builds. |
Only loosely following, but I think I like Plan C!! Thanks all ❤️ (Losing travis in exchange for longer build times is my "hot take", sounds worth it to me.) |
Currently the release process has many steps, including preparing things in this repo, and then starting a build in https://github.com/python-pillow/pillow-wheels, before downloading the sdist + wheel artifacts to disk, and manually uploading them to PyPI using twine.
I'd like us to move towards more automated releases, including using the new Trusted Publishers to upload wheels directly from the CI to PyPI, which is more secure:
We can do this in a phased manner, not all of these things would need to be done at once, to ensure we can still make releases with just some of them completed.
We could potentially deal with the Travis CI wheels later, and tackle GitHub Actions first as they're a bigger win and we don't know when Travis CI will go away.
Big picture:
I'd suggest something along these lines:
Move Linux and macOS https://github.com/python-pillow/pillow-wheels to this repo https://github.com/python-pillow/Pillow. We already have Windows wheels build here.
paths:
/paths-ignore
to workflows so we only trigger the main test workflows for "normal" code changes, and only trigger the wheel workflow for things like release and modifying its configAdd automation to download artifacts and upload them to PyPI via Trusted Publishing
Thoughts?
The text was updated successfully, but these errors were encountered: