Skip to content

Commit 3ba876f

Browse files
authored
Merge pull request #2819 from mbianchidev/docs-rc0
Documentation for rc0 tasks
2 parents 1155907 + f4ea48d commit 3ba876f

File tree

5 files changed

+565
-177
lines changed

5 files changed

+565
-177
lines changed

.github/ISSUE_TEMPLATE/cut-release.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ Help? Ring @release-managers on slack!
8787
- [ ] Notify #release-management on Slack: <!-- Paste link to slack -->
8888
- [ ] Update [`schedule.yaml` file](https://github.com/kubernetes/website/blob/main/data/releases/schedule.yaml) with the latest release using [`schedule-builder`](https://github.com/kubernetes/release/tree/master/cmd/schedule-builder) (_patch releases only_) <!-- Paste Pull Request URL here -->
8989
- [ ] Collect metrics and add them to the `Release steps` table below through `krel history --branch release-1.xx --date-from yyyy-mm-dd` (current date)
90-
<!-- ONLY FOR RC.0 RELEASES - [ ] Finish post-release branch creation tasks -->
91-
<!-- ONLY FOR STABLE RELEASES - [ ] Code Thaw PR merged -->
90+
<!-- ONLY FOR RC.0 RELEASES - [ ] Post-release branch creation tasks -->
91+
<!-- ONLY FOR .0 RELEASE - [ ] Code Thaw PR merged and OBS project created for the new minor release -->
9292

9393
## Release Tools Version
9494

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
---
2+
name: Post Release Branch Creation Tasks
3+
about: Tasks to perform after the rc.0 is cut and the upcoming release branch is created
4+
title: Post Release Branch Creation Tasks for v1.x.y-rc.0
5+
labels: sig/release, area/release-eng
6+
---
7+
8+
## As a follow up on: <!-- #<issue> typically the rc.0 cut issue (currently the branch is created by krel during that cut process) -->
9+
10+
## Tasks
11+
12+
<!--
13+
14+
Follow the docs here: https://github.com/kubernetes/sig-release/blob/master/release-engineering/handbooks/post-release-branch-creation.md
15+
16+
Help? Ring @release-managers on slack!
17+
18+
-->
19+
20+
- [ ] Create a thread in #release-management: <!-- Paste link to Slack thread -->
21+
- [ ] (optional) Remove jobs for EOL versions, **only** if agreed upon with Release Managers
22+
<!--
23+
Branch Managers might not have a context on if it is "safe" to remove the EOL jobs. We try to be firm with the deadlines and stop cutting patches as soon as we reach the EOL date, but e.g. there might be a new patch needed because of some important security fix, in which case only Release Managers will know about that.
24+
25+
There might be a significant time/delay between the release reaching EOL and the new branch being created, leaving those jobs hanging for a while, which has an impact on the project infra costs.
26+
27+
The trigger for removing such jobs should be solely the EOL date but we shouldn't connect getting rid of EOL jobs and the new branch creation. Even if has been like that before, it shouldn't be longterm.
28+
-->
29+
- [ ] Update [`milestone_applier` rules](https://github.com/kubernetes/test-infra/blob/master/config/prow/plugins.yaml)
30+
- [ ] Update [`kubekins-e2e-v2/variants.yaml`](https://github.com/kubernetes/test-infra/blob/master/images/kubekins-e2e-v2/variants.yaml) with the new version config
31+
- [ ] Rotate configuration of release branch jobs in kubernetes/test-infra in particular `releng/test_config.yaml` for the upcoming release
32+
- [ ] Run test generation script, configure the new release dashboards and send a PR with both tests and dashboards config
33+
- [ ] Add a new variant for the `kube-cross` image (`kubernetes/release` repository) and ensure the image is built and pushed properly
34+
- [ ] Add new variants for `k8s-cloud-builder` and `k8s-ci-builder` images (`kubernetes/release` repository) and ensure images are built and pushed properly
35+
- [ ] Update references in `kubernetes/kubernetes` with the new kube-cross image (only after all images are pushed/promoted)
36+
- [ ] Update publishing-bot rules to include the new release branch
37+
- [ ] Ensure that a new [performance tests](https://github.com/kubernetes/perf-tests/) branch is created by SIG Scalability maintainers
38+
- [ ] Inform stakeholders about the post branch creation tasks being completed
39+
- [ ] Monitor the new release dashboard with the Release Signal Lead for at least 48 hours - mainly for missing or misconfigured jobs
40+
41+
## Action Items
42+
43+
<!--
44+
During the post rc tasks, you may find a few things that require updates
45+
(process changes, documentation updates, fixes to release tooling).
46+
47+
Please list them here.
48+
49+
It will be your responsibility to open issues/PRs to resolve these
50+
issues/improvements. Keep this issue open until these action items
51+
are complete.
52+
53+
- [ ] Item 1
54+
- [ ] Item 2
55+
- [ ] Item 3
56+
-->
57+
58+
## Open Questions
59+
60+
<!--
61+
During the post rc tasks, you may have a few questions that you can't
62+
answer yourself or may require group discussion.
63+
64+
Please list them here.
65+
66+
Follow up with Branch Managers/Patch Release Team/Release Engineering
67+
subproject owners to get these questions answered.
68+
69+
- [ ] Item 1
70+
- [ ] Item 2
71+
- [ ] Item 3
72+
-->
73+
74+
/milestone <!-- v1.x e.g. v1.14 -->
75+
/assign <!-- @ the Release or Branch Manager responsible for this release -->
76+
/cc @kubernetes/release-managers @kubernetes/release-team-release-signal
77+
/priority important-soon
78+
/kind documentation

release-engineering/handbooks/k8s-release-cut.md

Lines changed: 79 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,38 @@
11
# Cutting a Kubernetes release
22

3+
<!-- toc -->
4+
- [Cutting a Kubernetes release](#cutting-a-kubernetes-release)
5+
- [Prerequisites](#prerequisites)
6+
- [Green Release Signal (pre-releases only)](#green-release-signal-pre-releases-only)
7+
- [Access to GCP](#access-to-gcp)
8+
- [Install latest software (every time)](#install-latest-software-every-time)
9+
- [Download or update `Go` to the latest available stable version:](#download-or-update-go-to-the-latest-available-stable-version)
10+
- [Download or update the `gcloud` CLI to interact with GCP.](#download-or-update-the-gcloud-cli-to-interact-with-gcp)
11+
- [Download or update `krel`](#download-or-update-krel)
12+
- [Download or update the latest `kpromo` tool](#download-or-update-the-latest-kpromo-tool)
13+
- [Download schedule-builder](#download-schedule-builder)
14+
- [Configure GitHub Personal Access Token](#configure-github-personal-access-token)
15+
- [1. Release cut issue](#1-release-cut-issue)
16+
- [2. Create a thread on the `#release-management` Slack channel](#2-create-a-thread-on-the-release-management-slack-channel)
17+
- [3. Generate testgrid screenshots](#3-generate-testgrid-screenshots)
18+
- [4. Check publishing-bot status](#4-check-publishing-bot-status)
19+
- [5. Mock stage and Mock release](#5-mock-stage-and-mock-release)
20+
- [6. No-mock stage](#6-no-mock-stage)
21+
- [7. Image promotion](#7-image-promotion)
22+
- [Merge promo PR](#merge-promo-pr)
23+
- [Wait on image promotion job](#wait-on-image-promotion-job)
24+
- [8. No-mock release](#8-no-mock-release)
25+
- [9. Notify public dev Google group mailinglist](#9-notify-public-dev-google-group-mailinglist)
26+
- [Manually create release HTML announcements](#manually-create-release-html-announcements)
27+
- [Legacy Sendgrid method:](#legacy-sendgrid-method)
28+
- [10. Post release tasks](#10-post-release-tasks)
29+
- [\[RC.0 only\] Considerations and post branch creation release tasks](#rc0-only-considerations-and-post-branch-creation-release-tasks)
30+
- [Next Release Branch Creation](#next-release-branch-creation)
31+
- [Post branch creation release tasks](#post-branch-creation-release-tasks)
32+
- [\[Stable only\] Code Thaw](#stable-only-code-thaw)
33+
- [\[Patch only\] Update schedule on k/website](#patch-only-update-schedule-on-kwebsite)
34+
- [Cleanup](#cleanup)
35+
336
A step by step guide for cutting Kubernetes patch releases. At a high-level:
437

538
- Maintain GitHub release cut issue
@@ -15,13 +48,17 @@ A step by step guide for cutting Kubernetes patch releases. At a high-level:
1548

1649
## Prerequisites
1750

18-
### Green Release Signal
51+
### Green Release Signal (pre-releases only)
1952

2053
On the same day of the release, a green signal must've been given in the #release-management Slack channel. If in doubt, double check with the current Release Signal Team Lead.
2154
You can find the complete list of release signal team members at this link (substitute `1.xx` with the current release version):
2255

2356
`https://github.com/kubernetes/sig-release/blob/master/releases/release-1.xx/release-team.md`
2457

58+
> [!NOTE]
59+
Ensure that there are no patch releases in progress, coordinating with @release-managers.
60+
These are typically scheduled on different days of the week, so there is usually no need to plan around them, but since they can sometimes overlap with other release activities, it's good to double-check.
61+
2562
### Access to GCP
2663

2764
You must be a member of [k8s-infra-release-editors](https://github.com/kubernetes/k8s.io/blob/main/groups/sig-release/groups.yaml) on GitHub.
@@ -117,10 +154,18 @@ krel version
117154

118155
#### Download or update the latest `kpromo` tool
119156

120-
Run the following command ([source](https://github.com/kubernetes-sigs/promo-tools/blob/main/docs/promotion-pull-requests.md#preparing-environment)):
157+
Run the following command ([source](https://github.com/kubernetes-sigs/promo-tools/blob/main/docs/promotion-pull-requests.md#preparing-environment)) to get the latest release of `kpromo`:
158+
159+
```
160+
go install sigs.k8s.io/promo-tools/v4/cmd/kpromo@main
161+
```
162+
163+
or to build the latest version directly from a target branch:
121164

122165
```
123-
go install sigs.k8s.io/promo-tools/v4/cmd/kpromo@latest
166+
git clone https://github.com/kubernetes-sigs/promo-tools
167+
git pull origin <target-branch>
168+
make kpromo
124169
```
125170

126171
Validate with:
@@ -248,6 +293,9 @@ If the issue is open you must stop the release process and inform #release-manag
248293

249294
## 5. Mock stage and Mock release
250295

296+
> [!WARNING]
297+
Before cutting `alpha.1` ideally some days before, ensure that @release-managers have performed the propedeutic tasks for the alpha cut (e.g. setting up the new OBS project)
298+
251299
Mock stages and mock releases are non-destructive and can be reran upon failure. To begin the mock stage, run the following `krel stage` command (replace the stage with the appropriate "type").
252300

253301
Run the following command from within the release repo directory.
@@ -477,12 +525,38 @@ krel history --branch release-1.33 --date-from 2025-04-23
477525

478526
## 10. Post release tasks
479527

480-
### [RC.0 only] Post rc.0 release tasks
528+
### [RC.0 only] Considerations and post branch creation release tasks
529+
530+
Remember that before launching the `nomock release` command for an rc.0, you need to ensure that the image promo job for the next alpha.0 has been completed successfully.
481531

482-
See [here](post-rc0-release-tasks.md) for the complete list of post rc.0 release tasks.
532+
#### Next Release Branch Creation
533+
534+
> [!IMPORTANT]
535+
> The new release branch is created in the `nomock` staging phase and pushed to the repository during the `nomock` release phase of an rc.0 cut.
536+
537+
During a `rc.0` release our release tooling creates a new release branch named `release-X.Y`, where `X.Y.0` is the version of the upcoming release.
538+
Additionally, the `rc.0` release automatically triggers an `alpha.0` build for the subsequent release (e.g. for `v1.34.0-rc.0`, `v1.35.0-alpha.0` is created automatically).
539+
540+
Behind the scenes `krel` is executing a `git branch create` command and `git push`.
541+
542+
At the same time Prow’s [`branchprotector`](https://git.k8s.io/test-infra/prow/cmd/branchprotector/README.md) runs every hour at 54 minutes past the hour and automatically adds [branch protection](https://help.github.com/articles/about-protected-branches/) to any new branch in the `kubernetes/kubernetes` repo, including the newly created one.
543+
No need to manually create the branch protection rule.
544+
545+
However, it is important to ensure that the branch is protected. We had cases where the branch was not protected and this was noticed very late.
546+
547+
> [!NOTE]
548+
This means that the staging step will take about twice as long, as it will stage both versions `vX.Y.0-rc.0` and `vX.{Y+1}.0-alpha.0`.
549+
The release step will also be extended, but not substantially longer in time.
550+
551+
#### Post branch creation release tasks
552+
553+
See [here](post-rc0-release-tasks.md) for the complete list of post branch creation release tasks.
483554

484555
Such list resides in a different document to mainain this one in a bite-sized SRE style format.
485556

557+
> [!WARNING]
558+
You will not be able to cut an rc.1 or any other cut against the new branch until the post branch creation tasks (post rc.0) are complete.
559+
486560
### [Stable only] Code Thaw
487561

488562
Code thaw means you need to lift the code freeze, [here](https://github.com/kubernetes/sig-release/blob/master/release-engineering/role-handbooks/branch-manager.md#code-thaw)

0 commit comments

Comments
 (0)