Skip to content

Commit 6f37ac8

Browse files
Merge pull request #26150 from ashley-cui/releaseprocess
Update RELEASE_PROCESS.md
2 parents b61e996 + b9cc2d8 commit 6f37ac8

File tree

1 file changed

+52
-103
lines changed

1 file changed

+52
-103
lines changed

RELEASE_PROCESS.md

Lines changed: 52 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ development efforts occur on the *main* branch. Branches with a
1212

1313
## Release workflow expectations
1414

15-
* You have push access to the [upstream podman repository](https://github.com/containers/podman.git)
15+
* You have push access to the [upstream podman repository](https://github.com/containers/podman.git), and the upstream [podman-machine-os repository](https://github.com/containers/podman-machine-os)
1616
* You understand all basic `git` operations and concepts, like creating commits,
1717
local vs. remote branches, rebasing, and conflict resolution.
18-
* You have access to your public and private *GPG* keys.
18+
* You have access to your public and private *GPG* keys. They should also be documented on our [release keys repo](https://github.com/containers/release-keys).
1919
* You have reliable internet access (i.e. not the public WiFi link at McDonalds)
2020
* Other podman maintainers are online/available for assistance if needed.
2121
* For a **major** release, you have 4-8 hours of time available, most of which will
@@ -25,12 +25,11 @@ development efforts occur on the *main* branch. Branches with a
2525
* You will announce the release on the proper platforms
2626
(i.e. Podman blog, Twitter, Mastodon Podman and Podman-Desktop mailing lists)
2727

28-
# Prechecks
28+
# Release cadence
2929

30-
Two days before actually cutting a release (including RCs), send an announcement to the
31-
[podman-desktop](mailto:[email protected])
32-
mailing list about the upcoming release. This will help the Podman Desktop team test and schedule
33-
their own new release.
30+
Upstream major or minor releases occur the 2nd week of February, May, August, November.
31+
Branching and RC's may start several weeks beforehand.
32+
Patch releases occur as-needed.
3433

3534
# Releases
3635

@@ -66,9 +65,8 @@ spelled with complete minutiae.
6665

6766
1. Create a new upstream release branch (if none already exist).
6867

69-
1. Check if a release branch is needed. Typically, major and minor version bumps
70-
should be branched sometime during the release candidate phase. Patch
71-
releases typically already have a branch created.
68+
1. Check if a release branch is needed. All major and minor releases should be branched before RC1.
69+
Patch releases typically already have a branch created.
7270
Branching ensures all changes are curated before inclusion in the
7371
release, and no new features land after the *release-candidate* phases
7472
are complete.
@@ -78,13 +76,11 @@ spelled with complete minutiae.
7876
`git checkout -b vX.Y`. Where `X.Y` represent the complete release
7977
version-name, including any suffix (if any) like `-rhel`. ***DO NOT***
8078
include any `-rc` suffix in the branch name.
81-
1. Edit the `.cirrus.yml` file, changing the `DEST_BRANCH` value (under the
82-
`env` section) to the new, complete branch name (e.x. `vX.Y`).
83-
Commit and sign, using the description
84-
`Cirrus: Update operating branch`.
8579
1. Push the new branch otherwise unmodified (`git push upstream vX.Y`).
86-
1. Automation will begin executing on the branch immediately. Because
87-
the repository allows out-of-sequence PR merging, it is possible that
80+
1. Check if a release branch is needed on the `podman-machine-os` repo.
81+
If so, repeat above steps for `podman-machine-os`.
82+
1. Back on the podman repo, automation will begin executing on the branch immediately.
83+
Because the repository allows out-of-sequence PR merging, it is possible that
8884
merge order introduced bugs/defects. To establish a clean
8985
baseline, observe the initial CI run on the branch for any unexpected
9086
failures. This can be done by going directly to
@@ -153,12 +149,7 @@ spelled with complete minutiae.
153149
1. Commit the `RELEASE_NOTES.md` changes, using the description
154150
`Create release notes for vX.Y.Z` (where `X`, `Y`, and `Z` are the
155151
actual version numbers).
156-
1. Open a Release Notes PR, or include this commit with the version bump PR
157-
* If you decide to open a PR with just release notes, make sure that
158-
the commit has the prefix `[CI:DOCS]` to avoid triggering
159-
lengthy automated testing.
160-
* Otherwise, the release notes commit can also be included in the
161-
following release PR.
152+
1. Open a Release Notes PR, or include this commit with the version bump PR.
162153

163154
1. Update version numbers and push tag
164155

@@ -177,29 +168,53 @@ spelled with complete minutiae.
177168
task `Optional Release Test`. In the right-hand window pane, click
178169
the `trigger` button and wait for the test to go green. *This is a
179170
critical step* which confirms the commit is worthy of becoming a release.
171+
1. In the PR, under the *Checks* tab, a GitHub actions [task](https://github.com/containers/podman/actions/workflows/machine-os-pr.yml) will run.
172+
This action opens a PR on the [podman-machine-os repo](https://github.com/containers/podman-machine-os), which builds VM images for the release. The action will also link the `podman-machine-os` pr in a comment on the podman PR
173+
This action also automatically applies the `do-not-merge/wait-machine-image-build` to the Podman PR, which blocks merging until VM images are built and published.
174+
1. Go to the `podman-machine-os` bump pr, by clicking the link in the comment, or by finding it in the [podman-machine-os repo](https://github.com/containers/podman-machine-os/pulls).
175+
1. Wait for automation to finish running
176+
1. Once you are sure that there will be no more force pushes on the Podman release PR, merge the `podman-machine-os` bump PR
177+
1. Tag the `podman-machine-os` bump commit with the same version as the podman release. (git tag -s -m 'vX.Y.Z' vX.Y.Z)
178+
1. Push the tag.
179+
1. The tag will automatically trigger a Cirrus task, named “Publish Image”,
180+
to publish the release images. It will push the images to Quay and cut a release on the `podman-machine-os` repo. Wait for this task to complete. You can monitor the task on the [Cirrus CI dashboard](https://cirrus-ci.com/github/containers/podman-machine-os)
181+
1. Return to the Podman repo
182+
1. The `do-not-merge/wait-podman-machine-os` label should be automatically
183+
un-set once the `podman-machine-os` release is finished.
184+
1. Wait for all other PR checks to pass.
185+
1. Wait for other maintainers to merge the PR.
180186
1. Tag the `Bump to vX.Y.Z` commit as a release by running
181-
`git tag -s -m 'vX.Y.Z' vX.Y.Z $HASH` where `$HASH` is specified explicitly
182-
and carefully, to avoid (basically) unfixable accidents (if they are pushed).
183-
1. Change `version/rawversion/version.go` again. This time, bump the **patch** version and
184-
re-add the `-dev` suffix to indicate this is a non-released version of Podman.
185-
1. Change `contrib/spec/podman.spec.in`, bumping **patch** number of `Version`.
186-
1. Commit these changes with the message `Bump to X.Y.Z-dev`.
187-
1. Push your local branch to your GitHub fork (and the PR) again.
188-
1. The PR should now have two commits that look very similar to
189-
https://github.com/containers/podman/pull/7787
190-
Note: Backports and release note commits may also be included in the release PR.
191-
1. Wait for at least all the "Build" and "Verify" (or similar) CI Testing
192-
steps to complete successfully. No need to wait for complete integration
193-
4and system-testing (it was already done on substantially the same code, above).
194-
1. Merge the PR (or ask someone else to review and merge, to be safer).
187+
`git tag -s -m 'vX.Y.Z' vX.Y.Z $HASH` where `$HASH` is specified explicitly and carefully, to avoid (basically) unfixable accidents
188+
(if they are pushed).
195189
1. **Note:** This is the last point where any test-failures can be addressed
196190
by code changes. After pushing the new version-tag upstream, no further
197191
changes can be made to the code without lots of unpleasant efforts. Please
198192
seek assistance if needed, before proceeding.
199-
200193
1. Assuming the "Bump to ..." PR merged successfully, and you're **really**
201194
confident the correct commit has been tagged, push it with
202195
`git push upstream vX.Y.Z`
196+
1. Monitor release automation
197+
1. After the tag is pushed, the release GitHub action should run.
198+
This action creates the GitHub release from the pushed tag,
199+
and automatically builds and uploads the binaries and installers to the release.
200+
1. The following artifacts should be attached to the release:
201+
* podman-installer-macos-amd64.pkg
202+
* podman-installer-macos-arm64.pkg
203+
* podman-installer-macos-universal.pkg
204+
* podman-installer-windows-amd64.exe
205+
* podman-installer-windows-arm64.exe
206+
* podman-remote-release-darwin_amd64.zip
207+
* podman-remote-release-darwin_arm64.zip
208+
* podman-remote-release-windows_amd64.zip
209+
* podman-remote-release-windows_arm64.zip
210+
* podman-remote-static-linux_amd64.tar.gz
211+
* podman-remote-static-linux_arm64.tar.gz
212+
* shasums
213+
1. An email should have been sent to the [podman](mailto:[email protected]) mailing list.
214+
Keep an eye on it make sure the email went through to the list.
215+
1. After the release action is run, an action to bump the Podman version on podman.io will run. This action will open a PR if a non-rc latest version is released. Go to the podman.io repo and merge the PR opened by this action, if needed.
216+
1. After the tag is pushed, an action to bump to -dev will run. A PR will be opened for this bump. Merge this PR if needed.
217+
203218

204219
1. Locate, Verify release testing is proceeding
205220

@@ -220,68 +235,6 @@ spelled with complete minutiae.
220235
"View All Tasks".
221236
1. Keep this page open to monitor its progress and for use in future steps.
222237

223-
1. Bump main `-dev` version
224-
225-
1. If you made a release branch and bumped **major** or **minor** version
226-
Complete the "Update version numbers and push tag" steps above on the
227-
*main* branch. Bump the **minor** version and set the **patch**
228-
version to 0. For example, after pushing the v2.2.0 release, *main*
229-
should be set to v2.3.0-dev.
230-
1. Create a "Bump to vX.Y.Z-dev" commit with these changes.
231-
1. Update `RELEASE_NOTES.md` on main. Commit these changes.
232-
1. Create a PR with the above commits, and oversee it's merging.
233-
234-
1. Create GitHub Release entry and upload assets
235-
236-
1. Return to the Cirrus-CI Build page for the new release tag, confirm
237-
(or wait for) it to complete, re-running any failed tasks as appropriate.
238-
1. Go to `https://github.com/containers/podman/releases/tag/vX.Y.Z` and
239-
press the "Edit Release" button. Change the name to the form `vX.Y.Z`
240-
1. If this is a release candidate be certain to click the pre-release
241-
checkbox at the bottom of the page.
242-
1. If this new release will be the latest version released, be certain to
243-
click the latest release checkbox at the bottom of the page.
244-
1. Copy and paste the release notes for the release into the body of
245-
the release.
246-
1. Click the Publish button to make the release (or pre-release)
247-
available.
248-
1. For all releases, including RC's, artifacts should be published. The
249-
release-artifacts, upload-win-installer, and mac-pkg GitHub Actions
250-
should automatically take care of building, signing, and uploading artifacts.
251-
Check the "Actions" tab, after publishing you should see the jobs running.
252-
There may be more than one running due to the multiple
253-
event states triggered, but this can be ignored, as any duplicates
254-
will gracefully back-off. The job takes 5-6 minutes to complete.
255-
256-
Please note that the Windows action depends on the artifact action, and will be
257-
triggered after the artifact action succeeds.
258-
259-
If any of these actions are somehow not triggered, you can manually trigger them
260-
261-
### *CLI Approach*
262-
1. Install the [GitHub CLI](https://github.com/cli/cli#installation)
263-
1. Run (replacing below version number to release version)
264-
```
265-
gh workflow run "ACTION NAME" -F version="vX.Y.Z"
266-
```
267-
### *GUI Approach*
268-
1. Go to the "Actions" tab
269-
1. On the left pick the required action to be triggered.
270-
1. A blue box will appear above the job list with a right side drop
271-
-down. Click the drop-down and specify the version number in the
272-
dialog that appears
273-
1. Check that all following artifacts are now attached to the release
274-
* podman-remote-release-darwin_amd64.zip
275-
* podman-remote-release-darwin_arm64.zip
276-
* podman-remote-release-windows_amd64.zip
277-
* podman-vX.Y.Z.msi
278-
* podman-remote-static-linux_amd64.tar.gz
279-
* podman-remote-static-linux_arm64.tar.gz
280-
* podman-installer-macos-amd64.pkg
281-
* podman-installer-macos-arm64.pkg
282-
* podman-5.2.1-setup.exe
283-
* shasums
284-
285238
1. Update Cirrus-CI cron job list
286239
1. After any Major or significant minor (esp. `-rhel`) releases, it's critical to
287240
maintain the Cirrus-CI cron job list. This applies to all containers-org repos,
@@ -310,9 +263,5 @@ spelled with complete minutiae.
310263
Highlight key features and important changes or fixes. Link to the GitHub release.
311264
Make sure the blog post is properly tagged with the Announcement, Release, and Podman tags,
312265
and any other appropriate tags.
313-
1. For all releases, including patch releases and RC's, send an email to the [podman](mailto:[email protected]) and [podman-desktop](mailto:[email protected]) mailing lists. This should be automated by the release-artifacts
314-
action, but it's best to keep and eye on it to see if the email went through to the lists.
315-
Link the to release blog and GitHub release.
316-
1. Update [LATEST_VERSION](https://github.com/containers/podman.io/blob/main/static/data/global.ts) on the Podman.io website.
317266
1. Tweet the release. Make a Mastodon post about the release.
318267
1. RC's can also be announced if needed.

0 commit comments

Comments
 (0)