-
Notifications
You must be signed in to change notification settings - Fork 15
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
Update release process #410
Conversation
@xylar @tomvothecoder Is this sufficient to address #396 or are further changes needed? Does
|
docs/source/dev_guide/release.rst
Outdated
@@ -81,7 +81,7 @@ Releasing Anaconda | |||
------------------ | |||
|
|||
1. Be sure to have already completed :ref:`Releasing On GitHub <github-release>`. This triggers the CI/CD workflow that handles Anaconda releases. | |||
2. Wait until the CI/CD build is successful. You can view all workflows at `All Workflows <https://github.com/E3SM-Project/zppy/actions>`_. | |||
2. Wait for a bot PR to come up automatically on conda-forge after the GitHub release. | |||
3. Check the https://anaconda.org/e3sm/zppy page to view the newly updated package. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a new page to point to?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The conda-forge bot PR can come as quickly as an hour later or as late as a day later (or in rare cases, longer). It depends on your specific needs; if you want a quicker release on conda-forge, you could simply bump up the version too (a new PR with version change and the new tar sha256). Also somewhere else down this page, it says something about anaconda.org/e3sm/zppy: Do you still intend to release on the e3sm channel? The conda-forge ones will be available at anaconda.org/conda-forge/zppy
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(For "backward" compatibility — if you will — you could also simply copy and paste the built artifacts from the conda-forge channel to the e3sm channel; also, note that there is a "staging" process in conda-forge, where the bots upload the artifacts an intermediate channel called cf-staging before moving the artifacts to the main conda-forge channel; the whole process used to take on the order of an hour, but now significantly shorter)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here's a link on the auto PR stuff: https://conda-forge.org/docs/maintainer/updating_pkgs.html#how-does-regro-cf-autotick-bot-create-automatic-version-updates
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The conda-forge bot PR can come as quickly as an hour later or as late as a day later
The conda-forge ones will be available at anaconda.org/conda-forge/zppy
The most recent commit addresses these.
if you want a quicker release
I'm not sure how quickly @xylar will need releases. Usually when we're testing E3SM Unified, we want to get release candidates integrated pretty quickly so we can start testing them. I suppose a day is a reasonable amount of time?
Do you still intend to release on the e3sm channel?
I don't think so? I think one channel is probably going to be sufficient.
docs/source/dev_guide/release.rst
Outdated
@@ -81,7 +81,7 @@ Releasing Anaconda | |||
------------------ | |||
|
|||
1. Be sure to have already completed :ref:`Releasing On GitHub <github-release>`. This triggers the CI/CD workflow that handles Anaconda releases. | |||
2. Wait until the CI/CD build is successful. You can view all workflows at `All Workflows <https://github.com/E3SM-Project/zppy/actions>`_. | |||
2. Wait for a bot PR to come up automatically on conda-forge after the GitHub release. | |||
3. Check the https://anaconda.org/e3sm/zppy page to view the newly updated package. | |||
|
|||
* Release candidates are assigned the ``e3sm_dev`` label |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you still want to do this on the conda-forge side btw? There's a similar mechanism, but the label will likely have to be longer
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here's a link on this (if you're still interested in keeping up with this): https://conda-forge.org/docs/maintainer/knowledge_base.html#pre-release-builds
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you still want to do this on the conda-forge side
I think this is probably a good idea, so we can differentiate between release candidates and actual releases. I'm sure that will be helpful to @xylar when assembling Unified as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, we use the e3sm_dev
label on conda-forge just like on the e3sm
channel. I absolutely have to have a release candidate for testing E3SM-Unified because the conda-forge/label/e3sm_dev
channel takes priority over the conda-forge
channel, meaning that it won't find a release for any package that has ever had a release candidate on the e3sm_dev
label. That's kind of inconvenient but I don't think there's a good way around it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here's a link on this (if you're still interested in keeping up with this): https://conda-forge.org/docs/maintainer/knowledge_base.html#pre-release-builds
I'm not quite sure I follow. Does the bot PR not work -- e.g., we have to make a manual PR with the dev
or rc
label?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You have to make the rc
tag locally (I wouldn't make a release because an rc
is not a release). Then, you make a PR to conda-forge from your fork of the feedstock. You need to start from the current dev
branch and update the version number and the sha256 sum manually. You need to set the build number back to 0 if needed. You need to make the dev
branch the target of the PR. That way, the package build on conda-forge will end up with the e3sm_dev
label.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can also work together on this for the first few times.
You have to make the
rc
tag locally
You can publish the tag without a release, or do you mean "here" by locally?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think continuing with everything the same here is fine https://github.com/E3SM-Project/zppy/releases/tag/v2.2.0rc4 (i.e., publishing these tags as prereleases). The only minor difference is at conda-forge. Just let us know when there's a release/pre-release and we can work together. It's best learned as it happens
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, locally means here.
I really wouldn't do a release page for release candidates. It's confusing when folks are looking for actual releases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really wouldn't do a release page for release candidates. It's confusing when folks are looking for actual releases.
Yeah, that's a good point. A tag (with no release) is more than enough :)
docs/source/dev_guide/release.rst
Outdated
@@ -81,7 +81,7 @@ Releasing Anaconda | |||
------------------ | |||
|
|||
1. Be sure to have already completed :ref:`Releasing On GitHub <github-release>`. This triggers the CI/CD workflow that handles Anaconda releases. | |||
2. Wait until the CI/CD build is successful. You can view all workflows at `All Workflows <https://github.com/E3SM-Project/zppy/actions>`_. | |||
2. Wait for a bot PR to come up automatically on conda-forge after the GitHub release. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would also note two important things here:
- One need to still merge the PR on the conda-forge side (we could set up an automerge bot as well)
- It is important to "rerender" the feedstock before merging (the bots usually do this automatically, but in case a person opens the PR, they should also rerender). Docs: https://conda-forge.org/docs/maintainer/updating_pkgs.html#rerendering-feedstocks
I will need to defer to @tomvothecoder on this but I believe only |
Only |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mahf708 @xylar Ok, I think I addressed all your comments. Let me know if this looks good to merge.
Just let us know when there's a release/pre-release and we can work together. It's best learned as it happens
That seems like a good idea, thanks! The next release candidate deadline for E3SM-Unified is June 1st, so I imagine around the last week of May the next release process will begin (with the production release occurring roughly a month later).
Releasing on GitHub: release candidates | ||
------------------- | ||
|
||
1. Create a tag for the release candidate at https://github.com/E3SM-Project/zppy/tags. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see a way to create a tag without creating a release. https://stackoverflow.com/questions/64561146/how-do-i-create-a-tag-in-github-without-creating-a-release suggests creating a release and then deleting it. Is it something to do on the command-line side (https://git-scm.com/book/en/v2/Git-Basics-Tagging)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think using the prerelease feature may be good. The bots won't pick it up as long as it is named with rc, beta, alpha, etc.
Alternatively,
$ git tag -a v0.0.1 -m "test tag"
$ git push origin v0.0.1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We currently use the pre-release feature for release-candidates (https://github.com/E3SM-Project/zppy/releases/tag/v2.2.0rc4 for instance). I do like that as it allows me to write up a summary of what's changed between RCs. That said, Xylar does have a point about it confusing people; it's annoying to sort through multiple RCs to get to actual releases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As a wild example, you can see how tensorflow does things: https://github.com/tensorflow/tensorflow/releases/tag/v2.12.0-rc1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, I see. An empty prerelease page may help, but I am not sure. I will defer to Xylar :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That structure is very similar to how I organize the zstash
and zppy
pre-release and release notes already, albeit with way more detail.
* Start from the current dev branch and update the version number and the sha256 sum manually. | ||
* Set the build number back to 0 if needed. | ||
* Make the dev branch the target of the PR. Then, the package build on conda-forge will end up with the ``e3sm_dev`` label. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this section will definitely need clarification, but we can improve the wording when we work on the next release together.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good, and yes, you will want either me or @xylar to do the initial swipe at this lest we end up unintentionally producing artifacts (packages). The idea is that you want to "rerender" it locally and then push directly into a new branch. It's much easier to just let us do it though 😸
docs/source/dev_guide/release.rst
Outdated
@@ -63,7 +63,12 @@ Bumping the Version | |||
|
|||
.. _github-release: | |||
|
|||
Releasing on GitHub | |||
Releasing on GitHub: release candidates | |||
------------------- |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note to self: rst
might require the entire section title to be underlined.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The docs changes look good to me (I haven't reviewed the workflow changes carefully but I trust you!)
Thanks and looking forward to getting things rolling on conda-forge 😺
eaea296
to
c226a45
Compare
Update release process. Resolves #396.