Proposal for automated management of issues targeted to release milestones
This commit is contained in:
parent
febbf0c0f7
commit
edc74dcb26
|
|
@ -0,0 +1,191 @@
|
|||
# Targeting issues and PRs to release milestones
|
||||
|
||||
This document describes how to target issues and PRs to a release.
|
||||
The process for shepherding issues into the release by the owner, release team, and GitHub bot
|
||||
is outlined below.
|
||||
|
||||
## Definitions
|
||||
|
||||
- *issue owners*: creator, assignees, and user who moved the issue into a release milestone
|
||||
- *Y days*: refers to business days (using the location local to the release-manager M-F)
|
||||
- *code slush*: starts when master branch only accepts PRs for release milestone. no additional feature development is merged after this point.
|
||||
- *code freeze*: starts 2 weeks after code slush. only critical bug fixes are accepted into the release codebase.
|
||||
|
||||
## Requirements for adding an issue to the milestone
|
||||
|
||||
**Note**: Issues with unmet label requirements will automatically be removed from the release milestone.
|
||||
|
||||
When adding an issue to a milestone, the Kubernetes bot will check that the following
|
||||
labels are set, and comment on the issue with the appropriate instructions. The
|
||||
bot will attempt to contact the issue creator 3 times (over 3 days)
|
||||
before automatically removing the issue from the milestone.
|
||||
|
||||
Label categories:
|
||||
|
||||
- SIG label owner
|
||||
- Priority
|
||||
- Issue type
|
||||
|
||||
### SIG owner label
|
||||
|
||||
The SIG owner label defines the SIG to which the bot will escalate if the issue is not resolved
|
||||
or updated by the deadline. If there are no updates after escalation, the
|
||||
issue may automatically removed from the milestone.
|
||||
|
||||
e.g. `sig/node`, `sig/federation`, `sig/apps`, `sig/network`
|
||||
|
||||
**Note:**
|
||||
- For test-infrastructure issues use `sig/testing`.
|
||||
- For GKE and GCE issues use `sig/gcp` once it is created, and `sig/cluster-lifecycle` until then.
|
||||
|
||||
### Priority
|
||||
|
||||
Priority label used by the bot to determine escalation path before moving an issues
|
||||
out of the release milestone. Also used to determine whether or not a release should be
|
||||
blocked on the resolution of the issue.
|
||||
|
||||
- `priority/critical-urgent`: Never automatically move out of a release milestone; continually escalate to contributor and SIG through all available channels.
|
||||
- considered a release blocking issue
|
||||
- code slush: issue owner update frequency: every 3 days
|
||||
- code freeze: issue owner update frequency: daily
|
||||
- would require a patch release if left undiscovered until after the minor release.
|
||||
- `priority/important-soon`: Escalate to the issue owners and SIG owner; move out of milestone after several unsuccessful escalation attempts.
|
||||
- not considered a release blocking issue
|
||||
- would not require a patch release
|
||||
- will automatically be moved out of the release milestone at code freeze
|
||||
- `priority/important-longterm`: Escalate to the issue owners; move out of the milestone after 1 attempt.
|
||||
- even less urgent / critical than `priority/important-soon`
|
||||
- moved out of milestone more aggressively than `priority/important-soon`
|
||||
|
||||
### Issue type
|
||||
|
||||
The issue type is used to help identify the types of changes going into the release over time.
|
||||
This will allow us to develop a better understanding of what sorts of issues we would miss
|
||||
with a faster release cadence.
|
||||
|
||||
This will also be used to escalate to the correct SIG GitHub team.
|
||||
|
||||
- `kind/bug`: Fixes a newly discovered bug.
|
||||
- were not known issues at the start of the development period.
|
||||
- `kind/feature`: New functionality.
|
||||
- `kind/cleanup`: Adding tests, refactoring, fixing old bugs.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. An issue is added to the current release milestone (either through creation or update)
|
||||
- Bot checks to make sure all required labels are set on the issue
|
||||
- If and only if any labels are missing, comment listing the missing labels and include a link to this document. Mention all issue owners.
|
||||
```
|
||||
@pwittrock @droot
|
||||
|
||||
**Action required**: Issue is missing the following required labels. Set the labels or the issue will be moved
|
||||
out of the milestone within 2 days.
|
||||
|
||||
- priority
|
||||
- severity
|
||||
|
||||
Additional instructions available [here](<link to this doc>)
|
||||
```
|
||||
- If and only if all labels are present, comment summarizing the state. Mention all issue owners.
|
||||
```
|
||||
@pwittrock @droot
|
||||
|
||||
Issue label settings:
|
||||
sig/node: Issue will be escalated to SIG node if needed
|
||||
priority/critical-urgent: Never automatically move out of a release milestone. Escalate to SIG and contributor through all available channels.
|
||||
kind/bug: Fixes a bug.
|
||||
|
||||
Additional instructions available [here](<link to this doc>)
|
||||
```
|
||||
- **If required labels are not applied within 3 days of being moved to the milestone, the issue is moved back out of the milestone. (unless it is critical-urgent)**
|
||||
2. If labels change, bot checks that the needed labels are present and comments with updated meaning.
|
||||
3. Code slush
|
||||
- **priority/important-* issues**
|
||||
- bot comments mentioning issue owners, expects a 1 time response.
|
||||
```
|
||||
**Action Required**:
|
||||
This issue is marked as priority/important-x, and is in the 1.y milestone. Please confirm the following
|
||||
or the issue will be removed from the milestone.
|
||||
|
||||
1. it is still targeted at the milestone
|
||||
2. it has not been completed and should remain open
|
||||
3. it is being actively worked on by the assignee
|
||||
|
||||
**Note**: This issue must be resolved or moved out of the milestone by <date of code freeze> or it will
|
||||
automatically be moved out of the milestone
|
||||
```
|
||||
- after 2 days without a reply, bot follows escalation procedure derived from priority label
|
||||
- important-longterm, remove from milestone and notify the owners
|
||||
- important-soon, escalate to SIG daily for 2 days.
|
||||
- removal should add the `release/removed-from-milestone` label and contain the following message
|
||||
```
|
||||
**Important**:
|
||||
There has been no confirmation that this issue belongs in the v1.X milestone.
|
||||
Removing it from the milestone.
|
||||
```
|
||||
- **priority/critical-urgent issues**
|
||||
- bot comments on issues not updated within 3 days mentioning issue owners, expects updates every 3 days going forward.
|
||||
```
|
||||
**Action Required**:
|
||||
This issue is marked as priority/critical-urgent, but has not been updated in 3 days. Please provide
|
||||
an update or the issue will be escalated to the SIG.
|
||||
```
|
||||
- owner updates can be a short ACK, but should include an ETA for completion and any risk factors.
|
||||
```
|
||||
ACK. In progress
|
||||
ETA: DD/MM/YYYY
|
||||
Risks: Complicated fix required
|
||||
```
|
||||
|
||||
```
|
||||
ACK. In progress
|
||||
ETA: ???
|
||||
Risks: Root cause unknown.
|
||||
```
|
||||
4. Code freeze
|
||||
- **priority/important-* issues**
|
||||
- bot comments mentioning issue owners, expects the issue to be escalated in priority or removed from milestone within 2 days.
|
||||
```
|
||||
**Action Required**:
|
||||
This issue is marked as priority/important-x, and is in the 1.y milestone. Only critical-urgent issue
|
||||
are being tracked for the 1.y release. Escalate the priority to critical-urgent within 1 day, **or the issue
|
||||
will be removed from the milestone**.
|
||||
```
|
||||
- bot immediately escalates to the SIG. escalation message includes link to all priority/important issues
|
||||
for the SIG remaining in the milestone.
|
||||
- **priority/critical-urgent issues**
|
||||
- bot comments on issues not updated within 1 day mentioning issue owners, expects updates every day going forward.
|
||||
- bot escalates to SIG after 2 days without updates and applies the label `release/needs-attention`
|
||||
|
||||
## Escalation
|
||||
|
||||
SIGs will have issues needing attention escalated through the following channels
|
||||
|
||||
- Comment mentioning the sig team appropriate for the issue type
|
||||
- Email the SIG googlegroup list
|
||||
- bootstrapped with the emails from the [community sig list](https://github.com/kubernetes/community/blob/master/sig-list.md)
|
||||
- maybe configured to email alternate googlegroup
|
||||
- maybe configured to directly email SIG leads or other SIG members
|
||||
- Message the SIG slack channel, mentioning the SIG leads
|
||||
- bootstrapped with the slackchannel and SIG leads from the [community sig list](https://github.com/kubernetes/community/blob/master/sig-list.md)
|
||||
- maybe configured to message alternate slack channel and users
|
||||
|
||||
## Issues tracked in other repos
|
||||
|
||||
Some issues are filed in repos outside the [kubernetes repo]. The bot must also be run against these
|
||||
repos and follow the same pattern. The release team can query issues across repos in the kubernetes org using
|
||||
a query like [this](https://github.com/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+milestone%3Av1.7+org%3Akubernetes+)
|
||||
|
||||
If the bot is not setup against the split repo, the repo owners should setup an umbrella tracking issue
|
||||
in the kubernetes/kubernetes repo and aggregate the status.
|
||||
|
||||
`Release 1.<minor version> blocking umbrella: <repo name> (size: <number of open issues>)`
|
||||
|
||||
it must also include:
|
||||
|
||||
- a link to the repo with a query for issues in the milestone. See [this](https://github.com/kubernetes/kubectl/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20milestone%3Av1.7) example.
|
||||
- a list of unresolved issues blocking the release. See
|
||||
[this](https://github.com/kubernetes/kubernetes/issues/47747) example.
|
||||
|
||||
|
||||
[kubernetes repo]: (https://github.com/kubernetes/kubernetes)
|
||||
Loading…
Reference in New Issue