Skip to content

Commit 4964c40

Browse files
committed
devel/sig-release: Markdown linting
Signed-off-by: Stephen Augustus <[email protected]>
1 parent 42e7ac5 commit 4964c40

File tree

3 files changed

+336
-332
lines changed

3 files changed

+336
-332
lines changed

contributors/devel/sig-release/cherry-picks.md

Lines changed: 120 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -2,88 +2,92 @@
22

33
This document explains how cherry-picks are managed on release branches within
44
the kubernetes/kubernetes repository.
5-
A common use case for this task is backporting PRs from master to release
5+
A common use case for this task is backporting PRs from master to release
66
branches.
77

8-
- [Prerequisites](#prerequisites)
9-
- [What Kind of PRs are Good for Cherry-picks](#what-kind-of-prs-are-good-for-cherry-picks)
10-
- [Initiate a Cherry-pick](#initiate-a-cherry-pick)
11-
- [Cherry-pick Review](#cherry-pick-review)
12-
- [Searching for Cherry-picks](#searching-for-cherry-picks)
13-
- [Troubleshooting Cherry-picks](#troubleshooting-cherry-picks)
14-
- [Cherry-picks for unsupported releases](#cherry-picks-for-unsupported-releases)
15-
16-
---
8+
- [Prerequisites](#prerequisites)
9+
- [What Kind of PRs are Good for Cherry-Picks](#what-kind-of-prs-are-good-for-cherry-picks)
10+
- [Initiate a Cherry-pick](#initiate-a-cherry-pick)
11+
- [Cherry-pick Review](#cherry-pick-review)
12+
- [Searching for Cherry-picks](#searching-for-cherry-picks)
13+
- [Troubleshooting Cherry-picks](#troubleshooting-cherry-picks)
14+
- [Cherry-picks for unsupported releases](#cherry-picks-for-unsupported-releases)
1715

1816
## Prerequisites
19-
* [Contributor License Agreement](http://git.k8s.io/community/CLA.md) is
17+
18+
- [Contributor License Agreement](http://git.k8s.io/community/CLA.md) is
2019
considered implicit for all code within cherry-pick pull requests,
2120
**unless there is a large conflict**.
22-
* A pull request merged against the master branch.
23-
* [Release branch](https://git.k8s.io/release/docs/branching.md) exists.
24-
* The normal git and GitHub configured shell environment for pushing to your
25-
kubernetes `origin` fork on GitHub and making a pull request against a
21+
- A pull request merged against the master branch.
22+
- [Release branch](https://git.k8s.io/release/docs/branching.md) exists.
23+
- The normal git and GitHub configured shell environment for pushing to your
24+
kubernetes `origin` fork on GitHub and making a pull request against a
2625
configured remote `upstream` that tracks
2726
"https://github.com/kubernetes/kubernetes.git", including `GITHUB_USER`.
28-
* Have `hub` installed, which is most easily installed via `go get
27+
- Have `hub` installed, which is most easily installed via `go get
2928
github.com/github/hub` assuming you have a standard golang development
3029
environment.
3130

32-
3331
## What Kind of PRs are Good for Cherry-Picks
3432

3533
Compared to the normal master branch's merge volume across time,
3634
the release branches see one or two orders of magnitude less PRs.
3735
This is because there is an order or two of magnitude higher scrutiny.
38-
Again the emphasis is on critical bug fixes, eg:
39-
* Loss of data
40-
* Memory corruption
41-
* Panic, crash, hang
42-
* Security
36+
Again the emphasis is on critical bug fixes, e.g.,
37+
38+
- Loss of data
39+
- Memory corruption
40+
- Panic, crash, hang
41+
- Security
4342

4443
If you are proposing a cherry-pick and it is not a clear and obvious
4544
critical bug fix, please reconsider. If upon reflection you wish to
46-
continue, bolster your case by supplementing your PR with, eg:
47-
48-
* A GitHub issue detailing the problem
45+
continue, bolster your case by supplementing your PR with e.g.,
4946

50-
* Scope of the change
47+
- A GitHub issue detailing the problem
5148

52-
* Risks of adding a change
49+
- Scope of the change
5350

54-
* Risks of associated regression
51+
- Risks of adding a change
5552

56-
* Testing performed, test cases added
53+
- Risks of associated regression
5754

58-
* Key stakeholder SIG reviewers/approvers attesting to their confidence in the
59-
change being a required backport
55+
- Testing performed, test cases added
6056

61-
* If the change is in cloud-provider-specific platform code (which is in the
62-
process of being moved out of core Kubernetes), describe the customer impact,
63-
how the issue escaped initial testing, remediation taken to prevent similar
64-
future escapes, and why the change cannot be carried in your downstream
65-
fork of the Kubernetes project branches. It is critical that our full
66-
community is actively engaged on enhancements in the project. If a
67-
released feature was not enabled on a particular provider's platform, this
68-
is a community miss that needs to be resolved in the master branch for
69-
subsequent releases. Such enabling will not be backported to the patch
70-
release branches.
57+
- Key stakeholder SIG reviewers/approvers attesting to their confidence in the
58+
change being a required backport
7159

60+
- If the change is in cloud-provider-specific platform code (which is in the
61+
process of being moved out of core Kubernetes), describe the customer impact,
62+
how the issue escaped initial testing, remediation taken to prevent similar
63+
future escapes, and why the change cannot be carried in your downstream
64+
fork of the Kubernetes project branches. It is critical that our full
65+
community is actively engaged on enhancements in the project. If a
66+
released feature was not enabled on a particular provider's platform, this
67+
is a community miss that needs to be resolved in the master branch for
68+
subsequent releases. Such enabling will not be backported to the patch
69+
release branches.
7270

7371
## Initiate a Cherry-pick
74-
* Run the [cherry-pick
75-
script](https://git.k8s.io/kubernetes/hack/cherry_pick_pull.sh).
76-
This example applies a master branch PR #98765 to the remote branch
77-
`upstream/release-3.14`: `hack/cherry_pick_pull.sh upstream/release-3.14
78-
98765`
79-
* Be aware the cherry-pick script assumes you have a git remote called
80-
`upstream` that points at the Kubernetes github org.
81-
Please see our [recommended Git workflow](https://git.k8s.io/community/contributors/guide/github-workflow.md#workflow).
82-
* You will need to run the cherry-pick script separately for each patch release you want to cherry-pick to.
83-
84-
* Your cherry-pick PR will immediately get the `do-not-merge/cherry-pick-not-approved` label.
85-
[Normal rules apply for code merge](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-release/release.md#tldr),
86-
with some additional caveats outlined in the next section of this document.
72+
73+
- Run the [cherry-pick script](https://git.k8s.io/kubernetes/hack/cherry_pick_pull.sh)
74+
This example applies a master branch PR #98765 to the remote branch
75+
`upstream/release-3.14`: `hack/cherry_pick_pull.sh upstream/release-3.14
76+
98765`
77+
78+
- Be aware the cherry-pick script assumes you have a git remote called
79+
`upstream` that points at the Kubernetes github org.
80+
81+
Please see our [recommended Git workflow](https://git.k8s.io/community/contributors/guide/github-workflow.md#workflow).
82+
83+
- You will need to run the cherry-pick script separately for each patch
84+
release you want to cherry-pick to.
85+
86+
- Your cherry-pick PR will immediately get the
87+
`do-not-merge/cherry-pick-not-approved` label.
88+
89+
[Normal rules apply for code merge](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-release/release.md#tldr),
90+
with some additional caveats outlined in the next section of this document.
8791

8892
## Cherry-pick Review
8993

@@ -101,81 +105,91 @@ or include in a comment the `/release-note-none` command.
101105
Cherry-pick pull requests are reviewed slightly differently than normal
102106
pull requests on the master branch in that they:
103107

104-
* Are by default expected to be `kind/bug` and `priority/critical-urgent`.
105-
106-
* Milestones must be set on the PR reflecting the milestone for the target
107-
release branch (for example, milestone v1.11 for a cherry-pick onto branch
108-
release-1.11). This is normally done for you by automation.
109-
110-
* Have one additional level of review in that they must be approved specifically
111-
for cherry-pick by branch approvers.
112-
113-
The [Branch Manager](https://git.k8s.io/sig-release/release-team/role-handbooks/branch-manager)
114-
will triage PRs targeted to the next .0 minor release branch up until the
115-
release, while the [Patch Release Team](https://git.k8s.io/sig-release/release-team/role-handbooks/patch-release-manager)
116-
will handle all cherry-picks to patch releases.
117-
118-
The [Branch Manager](https://git.k8s.io/sig-release/release-team/role-handbooks/branch-manager)
119-
or the [Patch Release Team](https://git.k8s.io/sig-release/release-team/role-handbooks/patch-release-manager)
120-
are the final authority on branch approval by removing the `do-not-merge/cherry-pick-not-approved`
121-
label and triggering a merge into the target branch.
122-
123-
The team scrubs through incoming cherry-picks on at least a weekly basis, daily during
124-
burndown ahead of a .0 release. Ahead of point releases, reminders of the
125-
cherry-pick deadline will be sent out to the community. Cherry-pick PRs are
126-
often metered into the release branches to give more deliberate CI signal across
127-
changes. For this reason your cherry-pick must be ready to merge ahead of
128-
the cherry-pick deadline, but those candidates may be merged during the days
129-
between the deadline and release.
130-
131-
Open cherry-pick PRs which do not land in the current release will
132-
continue to be tracked by the team for consideration for inclusion in a next
133-
patch release.
134-
135-
If you are concerned about the status of your cherry-pick, err on the
136-
side of overcommunicating and reach out to the branch reviewer(s):
137-
138-
* During code freeze or after code thaw and ahead of a .0 release, to get attention on a cherry-pick by the current
139-
release team members see the [appropriate release folder](https://git.k8s.io/sig-release/releases)
140-
for the target release's team contact information. You may cc them with
141-
`@<githubusername>` on your cherry-pick PR.
142-
143-
* For prior branches, check the [patch release schedule](https://git.k8s.io/sig-release/releases/patch-releases.md), which includes contact information for the patch release team.
108+
- Are by default expected to be `kind/bug` and `priority/critical-urgent`.
109+
110+
- Milestones must be set on the PR reflecting the milestone for the target
111+
release branch (for example, milestone v1.11 for a cherry-pick onto branch
112+
release-1.11). This is normally done for you by automation.
113+
114+
- Have one additional level of review in that they must be approved
115+
specifically for cherry-pick by branch approvers.
116+
117+
The [Branch Manager](https://git.k8s.io/sig-release/release-team/role-handbooks/branch-manager)
118+
will triage PRs targeted to the next .0 minor release branch up until the
119+
release, while the [Patch Release Team](https://git.k8s.io/sig-release/release-team/role-handbooks/patch-release-manager)
120+
will handle all cherry-picks to patch releases.
121+
122+
The [Branch Manager](https://git.k8s.io/sig-release/release-team/role-handbooks/branch-manager)
123+
or the [Patch Release Team](https://git.k8s.io/sig-release/release-team/role-handbooks/patch-release-manager)
124+
are the final authority on branch approval by removing the
125+
`do-not-merge/cherry-pick-not-approved` label and triggering a merge into the
126+
target branch.
127+
128+
The team scrubs through incoming cherry-picks on at least a weekly basis,
129+
daily during burndown ahead of a .0 release. Ahead of point releases,
130+
reminders of the cherry-pick deadline will be sent out to the community.
131+
Cherry-pick PRs are often metered into the release branches to give more
132+
deliberate CI signal across changes. For this reason your cherry-pick must be
133+
ready to merge ahead of the cherry-pick deadline, but those candidates may be
134+
merged during the days between the deadline and release.
135+
136+
Open cherry-pick PRs which do not land in the current release will
137+
continue to be tracked by the team for consideration for inclusion in a next
138+
patch release.
139+
140+
If you are concerned about the status of your cherry-pick, err on the
141+
side of overcommunicating and reach out to the branch reviewer(s):
142+
143+
- During code freeze or after code thaw and ahead of a .0 release, to get
144+
attention on a cherry-pick by the current release team members see the
145+
[appropriate release folder](https://git.k8s.io/sig-release/releases) for
146+
the target release's team contact information. You may cc them with
147+
`@<githubusername>` on your cherry-pick PR.
148+
- For prior branches, check the [patch release schedule](https://git.k8s.io/sig-release/releases/patch-releases.md),
149+
which includes contact information for the patch release team.
144150

145151
## Searching for Cherry-picks
146152

147153
- [A sample search on kubernetes/kubernetes pull requests that are labeled as `cherry-pick-approved`](https://github.com/kubernetes/kubernetes/pulls?q=is%3Aopen+is%3Apr+label%3Acherry-pick-approved)
148154

149155
- [A sample search on kubernetes/kubernetes pull requests that are labeled as `do-not-merge/cherry-pick-not-approved`](https://github.com/kubernetes/kubernetes/pulls?q=is%3Aopen+is%3Apr+label%3Ado-not-merge%2Fcherry-pick-not-approved)
150156

151-
152157
## Troubleshooting Cherry-picks
153158

154-
Contributors may encounter some of the following difficulties when initiating a cherry-pick.
159+
Contributors may encounter some of the following difficulties when initiating a
160+
cherry-pick.
155161

156-
- A cherry-pick PR does not apply cleanly against an old release branch.
157-
In that case, you will need to manually fix conflicts.
162+
- A cherry-pick PR does not apply cleanly against an old release branch. In
163+
that case, you will need to manually fix conflicts.
158164

159-
- The cherry-pick PR includes code that does not pass CI tests.
160-
In such a case you will have to fetch the auto-generated branch from your fork, amend the problematic commit and force push to the auto-generated branch.
161-
Alternatively, you can create a new PR, which is noisier.
165+
- The cherry-pick PR includes code that does not pass CI tests. In such a case
166+
you will have to fetch the auto-generated branch from your fork, amend the
167+
problematic commit and force push to the auto-generated branch.
168+
Alternatively, you can create a new PR, which is noisier.
162169

163170
## Cherry-picks for unsupported releases
164171

165-
The release team only supports & patches `n-3` releases (`n` being the latest release of Kubernetes). In January of 2019 the community discovered a regression, that was introduced in a post-release patch, but was currently no longer supported.
172+
The release team only supports & patches `n-3` releases (`n` being the latest
173+
release of Kubernetes). In January of 2019 the community discovered a
174+
regression, that was introduced in a post-release patch, but was currently no
175+
longer supported.
166176

167-
As discussed in a sig-release meeting on 2019-01-15, a fix was backported to the non supported version.
177+
As discussed in a sig-release meeting on 2019-01-15, a fix was backported to
178+
the non supported version.
168179

169180
Reference PR: [#72860](https://github.com/kubernetes/kubernetes/pull/72860#issuecomment-454072746)
170181

171182
The specific criteria driving the decision was:
172183

173184
- CI was still available for the version
174-
- The regression was introduced as a patch (and not part of the official release)
185+
- The regression was introduced as a patch (and not part of the official
186+
release)
175187
- The issue being fixed is of sufficient **[severity & impact](#what-kind-of-prs-are-good-for-cherry-picks)**
176-
- The fix is well understood and contained (doesn’t introduce risk of additional regressions)
188+
- The fix is well understood and contained (doesn’t introduce risk of
189+
additional regressions)
177190

178191
A note about the specific case in [#72860](https://github.com/kubernetes/kubernetes/pull/72860#issuecomment-454072746):
179192

180193
- The patch was exceedingly tiny and very unlikely to introduce new problems
181-
- Luckily, it was caught shortly after the release was supposed to be unsupported
194+
- Luckily, it was caught shortly after the release was supposed to be
195+
unsupported

contributors/devel/sig-release/getting-builds.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,16 @@ You can also use the gsutil tool to explore the Google Cloud Storage release
3232
buckets. Here are some examples:
3333

3434
```sh
35-
gsutil cat gs://kubernetes-release-dev/ci/latest.txt # output the latest ci version number
36-
gsutil ls gs://kubernetes-release-dev/ci/v0.20.0-29-g29a55cc/ # list the contents of a ci release
37-
gsutil ls gs://kubernetes-release/release # list all official releases and rcs
35+
gsutil cat gs://kubernetes-release-dev/ci/latest.txt # output the latest ci version number
36+
gsutil ls gs://kubernetes-release-dev/ci/v0.20.0-29-g29a55cc/ # list the contents of a ci release
37+
gsutil ls gs://kubernetes-release/release # list all official releases and rcs
3838
```
3939

4040
## Install `gsutil`
4141

4242
Example installation:
4343

4444
```console
45-
$ curl -sSL https://storage.googleapis.com/pub/gsutil.tar.gz | sudo tar -xz -C /usr/local/src
46-
$ sudo ln -s /usr/local/src/gsutil/gsutil /usr/bin/gsutil
45+
curl -sSL https://storage.googleapis.com/pub/gsutil.tar.gz | sudo tar -xz -C /usr/local/src
46+
sudo ln -s /usr/local/src/gsutil/gsutil /usr/bin/gsutil
4747
```

0 commit comments

Comments
 (0)