-
Notifications
You must be signed in to change notification settings - Fork 11
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
Revising the release process #326
Comments
I think the "Push wheels to PyPI" should be a separate manual action because you can only do it once (PyPI will not allow you to modify a release), so there's a high chance something will go wrong even if you make it through all the stages of the action successfully... I'd stop the automatic release action at the GitHub release stage, then manually test the wheels created in the GitHub release and if they were good then upload it to PyPI... The system I used with |
Our initial thought was also to be wary of the push to PyPI step, but... Once we've run a test suite on the already-built wheels, what other reassurance are we waiting for? What is the likely failure scenario that doesn't kill the Action first? Currently cibuildwheel is used for the manylinux builds; this has a feature to automatically run isolated tests from the wheel after it is built. It could be a good idea to use this for the other platforms as well, and simplify things a bit. (As pointed out by @oerc0122 ) |
Yeah, I think using |
Here's an idea for a 2-step process:
The key tweaks/improvements here are:
We could have the release automatically run on new tags, so that the first attempt at a release is still "one click". |
If the process is more streamlined, we would be more likely to do "release candidate" versions which are another tool for catching packaging problems. One issue with the current build setup is that conda-forge builds from the PyPI sdist (a good thing for consistency) and so doesn't readily have access to the test suite that sits outside the source folder. Currently the conda-forge recipe merely checks that the the command line tools can be run with For high-risk releases, a release candidate could help. On conda-forge this is achieved by pushing to a separate feedstock branch, and it is not too easy for users to install a release candidate accidentally: https://conda-forge.org/docs/maintainer/knowledge_base/#creating-a-pre-release-build . It might be a good idea to have the |
Another interesting thought for release tests (and maybe regular tests): |
One complication: Github deliberately makes it slightly tricky to have actions run in response to an automated push. peter-evans/create-pull-request#48 It can be done by adding a PAT to secrets, but let's start out with manual triggers and see how it goes. |
A bit of reflection on pre/post releases and CHANGELOG manipulation with @oerc0122 led to this proposal:
This keeps the logic for checking and manipulating CHANGELOG fairly simple, and means that as a developer the rule is:
|
The updated proposal for a "1-step" release action is:
It would make sense to provide a boolean "dry-run" option that quits the workflow after step 7. Overall then this combines to functions of the existing "build wheels and push to pypi" workflow and the (soon to be merged) "set version" workflow. I had initially thought that the "set version" workflow would remain separate and be called as a step by "the big one"; but that doesn't make it so easy to defer pushing the commit/tag until tests have run. So maybe a single mega-workflow is the way to go. |
Discussion with @oerc0122
The existing release process for Euphonic is at https://github.com/pace-neutrons/pace-developers/blob/master/euphonic/development/02_releases.md
As we move to a meson-based build system and rework the corresponding actions, it might be wise to have a single action which:
The text was updated successfully, but these errors were encountered: