1
- # Targeting Features , Issues and PRs to Release Milestones
1
+ # Targeting enhancements , Issues and PRs to Release Milestones
2
2
3
- This document is focused on Kubernetes developers and contributors
4
- who need to create a feature , issue, or pull request which targets a specific
5
- release milestone.
3
+ This document is focused on Kubernetes developers and contributors who need to
4
+ create an enhancement , issue, or pull request which targets a specific release
5
+ milestone.
6
6
7
7
- [ TL;DR] ( #tldr )
8
8
- [ Normal Dev (Weeks 1-8)] ( #normal-dev-weeks-1-8 )
@@ -21,21 +21,21 @@ release milestone.
21
21
- [ Priority Label] ( #priority-label )
22
22
- [ Issue/PR Kind Label] ( #issuepr-kind-label )
23
23
24
- The process for shepherding features , issues, and pull requests
25
- into a Kubernetes release spans multiple stakeholders:
24
+ The process for shepherding enhancements , issues, and pull requests into a
25
+ Kubernetes release spans multiple stakeholders:
26
26
27
- - the feature , issue, or pull request owner
27
+ - the enhancement , issue, and pull request owner(s)
28
28
- SIG leadership
29
- - the release team
29
+ - the [ Release Team ] [ release- team]
30
30
31
31
Information on workflows and interactions are described below.
32
32
33
- As the owner of a feature , issue, or pull request (PR), it is your
33
+ As the owner of an enhancement , issue, or pull request (PR), it is your
34
34
responsibility to ensure release milestone requirements are met. Automation and
35
- the release team will be in contact with you if updates are required, but
36
- inaction can result in your work being removed from the milestone. Additional
35
+ the Release Team will be in contact with you if updates are required, but
36
+ inaction can result in your work being removed from the milestone. Additional
37
37
requirements exist when the target milestone is a prior release (see
38
- [ cherry pick process] ( cherry-picks.md ) for more information).
38
+ [ cherry pick process] [ cherry-picks ] for more information).
39
39
40
40
## TL;DR
41
41
@@ -49,7 +49,7 @@ milestones, represented here by the Prow /commands it would take to add them:
49
49
- /lgtm
50
50
- /approved
51
51
52
- ### Code Freeze (Weeks 9-11)
52
+ ### [ Code Freeze] [ code-freeze ] (Weeks 9-11)
53
53
54
54
- /milestone {v1.y}
55
55
- /sig {name}
@@ -66,103 +66,119 @@ Return to 'Normal Dev' phase requirements:
66
66
- /lgtm
67
67
- /approved
68
68
69
- Merges into the 1.y branch are now [ via cherry picks] ( /contributors/devel/sig-release/ cherry-picks.md ) ,
70
- approved by release branch manager .
69
+ Merges into the 1.y branch are now [ via cherry picks] [ cherry-picks ] , approved
70
+ by [ Release Managers ] [ release-managers ] .
71
71
72
- In the past there was a requirement for a milestone targeted pull request to
72
+ In the past, there was a requirement for a milestone- targeted pull requests to
73
73
have an associated GitHub issue opened, but this is no longer the case.
74
- Features are effectively GitHub issues or [ KEPs] [ keps ] which lead to subsequent
75
- PRs. The general labeling process should be consistent across artifact types .
74
+ Features or enhancements are effectively GitHub issues or [ KEPs] [ keps ] which
75
+ lead to subsequent PRs .
76
76
77
- ---
77
+ The general labeling process should be consistent across artifact types.
78
78
79
79
## Definitions
80
80
81
81
- * issue owners* : Creator, assignees, and user who moved the issue into a
82
82
release milestone
83
- - * release team* : Each Kubernetes release has a team doing project
84
- management tasks described [ here] ( https://git.k8s.io/sig-release/release-team/README.md ) .
83
+
84
+ - * Release Team* : Each Kubernetes release has a team doing project management
85
+ tasks described [ here] [ release-team ] .
86
+
85
87
The contact info for the team associated with any given release can be found
86
88
[ here] ( https://git.k8s.io/sig-release/releases/ ) .
87
- - * Y days* : Refers to business days (using the location local to the release
88
- manager M-F).
89
- - * enhancement* : see "[ Is My Thing an Enhancement?] ( https://git.k8s.io/enhancements/README.md#is-my-thing-an-enhancement )
90
- - * [ Enhancement Freeze] ( https://git.k8s.io/sig-release/releases/release_phases.md#enhancements-freeze ) * :
91
- the deadline by which KEPs have to be completed in order for enhancements to
92
- be part of the current release
93
- - * [ Exception Request] ( https://git.k8s.io/sig-release/releases/release_phases.md#exceptions ) * :
89
+
90
+ - * Y days* : Refers to business days
91
+
92
+ - * enhancement* : see "[ Is My Thing an Enhancement?] ( https://git.k8s.io/enhancements/README.md#is-my-thing-an-enhancement ) "
93
+
94
+ - * [ Enhancements Freeze] [ enhancements-freeze ] * :
95
+ the deadline by which [ KEPs] [ keps ] have to be completed in order for
96
+ enhancements to be part of the current release
97
+
98
+ - * [ Exception Request] [ exceptions ] * :
94
99
The process of requesting an extension on the deadline for a particular
95
100
Enhancement
96
- - * [ Code Freeze] ( https://git.k8s.io/sig-release/releases/release_phases.md#code-freeze ) * :
101
+
102
+ - * [ Code Freeze] [ code-freeze ] * :
97
103
The period of ~ 4 weeks before the final release date, during which only
98
104
critical bug fixes are merged into the release.
105
+
99
106
- * [ Pruning] ( https://git.k8s.io/sig-release/releases/release_phases.md#pruning ) * :
100
107
The process of removing an Enhancement from a release milestone if it is not
101
108
fully implemented or is otherwise considered not stable.
109
+
102
110
- * release milestone* : semantic version string or
103
111
[ GitHub milestone] ( https://help.github.com/en/github/managing-your-work-on-github/associating-milestones-with-issues-and-pull-requests )
104
- referring to a release MAJOR.MINOR vX.Y version. See also
105
- [ release versioning] ( /contributors/design-proposals/release/versioning.md )
106
- - * release branch* : Git branch "release-X.Y" created for the vX.Y milestone.
107
- Created at the time of the vX.Y-beta.0 release and maintained after the
108
- release for approximately 9 months with vX.Y.Z patch releases.
112
+ referring to a release MAJOR.MINOR ` vX.Y ` version.
113
+
114
+ See also
115
+ [ release versioning] ( /contributors/design-proposals/release/versioning.md ) .
116
+
117
+ - * release branch* : Git branch ` release-X.Y ` created for the ` vX.Y ` milestone.
118
+
119
+ Created at the time of the ` vX.Y-rc.0 ` release and maintained after the
120
+ release for approximately 12 months with ` vX.Y.Z ` patch releases.
109
121
110
122
## The Release Cycle
111
123
112
124
![ Image of one Kubernetes release cycle] ( release-cycle.png )
113
125
114
- Kubernetes releases currently happen four times per year. The release
115
- process can be thought of as having three main phases:
126
+ Kubernetes releases currently happen approximately four times per year.
127
+
128
+ The release process can be thought of as having three main phases:
116
129
117
- - Feature Definition
130
+ - Enhancement Definition
118
131
- Implementation
119
132
- Stabilization
120
133
121
- But in reality this is an open source and agile project, with feature planning
134
+ But in reality, this is an open source and agile project, with feature planning
122
135
and implementation happening at all times. Given the project scale and globally
123
136
distributed developer base, it is critical to project velocity to not rely on a
124
137
trailing stabilization phase and rather have continuous integration testing
125
138
which ensures the project is always stable so that individual commits can be
126
139
flagged as having broken something.
127
140
128
141
With ongoing feature definition through the year, some set of items will bubble
129
- up as targeting a given release. The ** enhancement freeze** starts ~ 4 weeks
130
- into release cycle. By this point all intended feature work for the given
131
- release has been defined in suitable planning artifacts in conjunction with the
132
- Release Team's [ enhancements lead ] ( https://git.k8s.io/sig-release/release-team/role-handbooks/enhancements/README.md ) .
142
+ up as targeting a given release. ** [ Enhancements Freeze ] [ enhancements- freeze] **
143
+ starts ~ 4 weeks into release cycle. By this point all intended feature work for
144
+ the given release has been defined in suitable planning artifacts in
145
+ conjunction with the Release Team's [ Enhancements Lead ] ( https://git.k8s.io/sig-release/release-team/role-handbooks/enhancements/README.md ) .
133
146
134
- After enhancement freeze , tracking milestones on PRs and Issues is important.
147
+ After Enhancements Freeze , tracking milestones on PRs and issues is important.
135
148
Items within the milestone are used as a punchdown list to complete the
136
149
release. * On issues* , milestones must be applied correctly, via triage by the
137
- SIG, so that release team can track bugs and enhancements (any
150
+ SIG, so that [ Release Team ] [ release- team] can track bugs and enhancements (any
138
151
enhancement-related issue needs a milestone).
139
152
140
- There is some automation in place to help automatically-assign milestones to
141
- PRs. This automation only applies to the following repos:
153
+ There is some automation in place to help automatically assign milestones to
154
+ PRs.
155
+
156
+ This automation currently applies to the following repos:
142
157
143
- - kubernetes/enhancements
144
- - kubernetes/kubernetes
145
- - kubernetes/release
146
- - kubernetes/sig-release
147
- - kubernetes/test-infra
158
+ - ` kubernetes/enhancements `
159
+ - ` kubernetes/kubernetes `
160
+ - ` kubernetes/release `
161
+ - ` kubernetes/sig-release `
162
+ - ` kubernetes/test-infra `
148
163
149
- At creation time, PRs against the master branch need humans to hint at which
150
- milestone they might want the PR to target. Once merged, PRs against the master
151
- branch have milestones auto-applied so from that time onward human management
152
- of that PR's milestone is less necessary. On PRs against anything not the
153
- master branch , milestones are auto-applied when the PR is created so no human
164
+ At creation time, PRs against the ` master ` branch need humans to hint at which
165
+ milestone they might want the PR to target. Once merged, PRs against the
166
+ ` master ` branch have milestones auto-applied so from that time onward human
167
+ management of that PR's milestone is less necessary. On PRs against release
168
+ branches , milestones are auto-applied when the PR is created so no human
154
169
management of the milestone is ever necessary.
155
170
156
- Any other effort that should be tracked by the release team that doesn't fall
171
+ Any other effort that should be tracked by the Release Team that doesn't fall
157
172
under that automation umbrella should be have a milestone applied.
158
173
159
174
Implementation and bug fixing is ongoing across the cycle, but culminates in a
160
- code freeze period:
175
+ code freeze period.
161
176
162
- - The ** code freeze* - starts in week ~ 10 and continues for ~ 2 weeks.
163
- Only critical bug fixes are accepted into the release codebase.
177
+ ** [ Code Freeze] [ code-freeze ] ** starts in week ~ 10 and continues for ~ 2 weeks.
178
+ Only critical bug fixes are accepted into the release codebase during this
179
+ time.
164
180
165
- There are approximately two weeks following code freeze , and preceding release,
181
+ There are approximately two weeks following Code Freeze , and preceding release,
166
182
during which all remaining critical issues must be resolved before release.
167
183
This also gives time for documentation finalization.
168
184
@@ -180,17 +196,18 @@ Each release is part of a broader Kubernetes lifecycle:
180
196
Before getting too far into the process for adding an item to the milestone,
181
197
please note:
182
198
183
- Members of the Release Team may remove Issues from the milestone if they or the
184
- responsible SIG determine that the issue is not actually blocking the release
185
- and is unlikely to be resolved in a timely fashion.
199
+ Members of the [ Release Team] [ release-team ] may remove issues from the
200
+ milestone if they or the responsible SIG determine that the issue is not
201
+ actually blocking the release and is unlikely to be resolved in a timely
202
+ fashion.
186
203
187
204
Members of the Release Team may remove PRs from the milestone for any of the
188
205
following, or similar, reasons:
189
206
190
207
- PR is potentially de-stabilizing and is not needed to resolve a blocking
191
208
issue
192
- - PR is a new, late feature PR and has not gone through the features process or
193
- the exception process
209
+ - PR is a new, late feature PR and has not gone through the enhancements
210
+ process or the [ exception process] [ exceptions ]
194
211
- There is no responsible SIG willing to take ownership of the PR and resolve
195
212
any follow-up issues with it
196
213
- PR is not correctly labelled
@@ -202,7 +219,7 @@ secure support from the relevant SIG to guarantee that any breakage caused by
202
219
the PR will be rapidly resolved.
203
220
204
221
Where additional action is required, an attempt at human to human escalation
205
- will be made by the release team through the following channels:
222
+ will be made by the Release Team through the following channels:
206
223
207
224
- Comment in GitHub mentioning the SIG team and SIG members as appropriate for
208
225
the issue type
@@ -231,30 +248,30 @@ by SIG Release and has representation from the various SIGs' leadership.
231
248
Feature planning and definition takes many forms today, but a typical example
232
249
might be a large piece of work described in a [ KEP] [ keps ] , with associated task
233
250
issues in GitHub. When the plan has reached an implementable state and work is
234
- underway, the feature or parts thereof are targeted for an upcoming milestone
251
+ underway, the enhancement or parts thereof are targeted for an upcoming milestone
235
252
by creating GitHub issues and marking them with the Prow "/milestone" command.
236
253
237
- For the first ~ 4 weeks into the release cycle, the release team 's Enhancements
254
+ For the first ~ 4 weeks into the release cycle, the Release Team 's Enhancements
238
255
Lead will interact with SIGs and feature owners via GitHub, Slack, and SIG
239
256
meetings to capture all required planning artifacts.
240
257
241
- If you have a feature to target for an upcoming release milestone, begin a
258
+ If you have an enhancement to target for an upcoming release milestone, begin a
242
259
conversation with your SIG leadership and with that release's Enhancements
243
260
Lead.
244
261
245
262
### Issue additions
246
263
247
264
Issues are marked as targeting a milestone via the Prow "/milestone" command.
248
265
249
- The release team 's [ Bug Triage Lead] ( https://git.k8s.io/sig-release/release-team/role-handbooks/bug-triage/README.md )
266
+ The Release Team 's [ Bug Triage Lead] ( https://git.k8s.io/sig-release/release-team/role-handbooks/bug-triage/README.md )
250
267
and overall community watch incoming issues and triage them, as described in
251
268
the contributor guide section on
252
269
[ issue triage] ( /contributors/guide/issue-triage.md ) .
253
270
254
271
Marking issues with the milestone provides the community better visibility
255
272
regarding when an issue was observed and by when the community feels it must be
256
- resolved. During code freeze, to merge a PR it is required that a release
257
- milestone is set .
273
+ resolved. During [ Code Freeze ] [ code- freeze] , a milestone must be set to merge
274
+ a PR .
258
275
259
276
An open issue is no longer required for a PR, but open issues and associated
260
277
PRs should have synchronized labels. For example a high priority bug issue
@@ -265,7 +282,7 @@ priority.
265
282
266
283
PRs are marked as targeting a milestone via the Prow "/milestone" command.
267
284
268
- This is a blocking requirement during code freeze as described above.
285
+ This is a blocking requirement during Code Freeze as described above.
269
286
270
287
## Other Required Labels
271
288
@@ -290,14 +307,14 @@ release should be blocked on the resolution of the issue.
290
307
milestone; continually escalate to contributor and SIG through all available
291
308
channels.
292
309
- considered a release blocking issue
293
- - code freeze: issue owner update frequency: daily
310
+ - requires daily updates from issue owners during [ Code Freeze ] [ code-freeze ]
294
311
- would require a patch release if left undiscovered until after the minor
295
312
release
296
313
- ` priority/important-soon ` : Escalate to the issue owners and SIG owner; move
297
314
out of milestone after several unsuccessful escalation attempts.
298
315
- not considered a release blocking issue
299
316
- would not require a patch release
300
- - will automatically be moved out of the release milestone at code freeze
317
+ - will automatically be moved out of the release milestone at Code Freeze
301
318
after a 4 day grace period
302
319
- ` priority/important-longterm ` : Escalate to the issue owners; move out of the
303
320
milestone after 1 attempt.
@@ -307,7 +324,7 @@ release should be blocked on the resolution of the issue.
307
324
### Issue/PR Kind Label
308
325
309
326
The issue kind is used to help identify the types of changes going into the
310
- release over time. This may allow the release team to develop a better
327
+ release over time. This may allow the Release Team to develop a better
311
328
understanding of what sorts of issues we would miss with a faster release
312
329
cadence.
313
330
@@ -323,5 +340,11 @@ issue kind labels must be set:
323
340
- ` kind/feature ` : New functionality.
324
341
- ` kind/flake ` : CI test case is showing intermittent failures.
325
342
343
+ [ cherry-picks ] : /contributors/devel/sig-release/cherry-picks.md
344
+ [ code-freeze ] : https://git.k8s.io/sig-release/releases/release_phases.md#code-freeze
345
+ [ enhancements-freeze ] : https://git.k8s.io/sig-release/releases/release_phases.md#enhancements-freeze
346
+ [ exceptions ] : https://git.k8s.io/sig-release/releases/release_phases.md#exceptions
326
347
[ keps ] : https://git.k8s.io/enhancements/keps
348
+ [ release-managers ] : https://git.k8s.io/sig-release/release-managers.md
349
+ [ release-team ] : https://git.k8s.io/sig-release/release-team
327
350
[ sig-list ] : /sig-list.md
0 commit comments