Skip to content

Commit bcad1ba

Browse files
Initial release-handling proposal
1 parent f66490f commit bcad1ba

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

release-handling.md

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
## kpt release handling process
2+
3+
This is currently a work-in-progress, based on ongoing discussions in the kpt development team.
4+
5+
### Semantic Versioning
6+
7+
We follow semantic versioning. This can mean we have to reject non-backward-compatible changes until
8+
a breaking release in order to preserve backward compatibility.
9+
10+
For kpt this means:
11+
12+
Packages:
13+
* Package format MUST NOT change
14+
* Optional fields can be added
15+
16+
Command line:
17+
* Subcommands MUST NOT be removed
18+
* Subcommands SHOULD NOT change in meaning
19+
* Command line flags MUST NOT be deleted
20+
* Command line flags SHOULD NOT change in meaning
21+
22+
Code:
23+
* Existing behaviours MUST NOT change
24+
25+
Compatibility with Kubernetes:
26+
TBD
27+
28+
During a major release, all code is subject to revision, but package backward compatibility SHOULD be retained.
29+
30+
### Issue Triaging
31+
32+
Core maintainers take turns triaging the issue queue (week on, week off). The responsibilities of a triaging run are:
33+
34+
#### Issue tagging
35+
* Bug, feature, question/support, documentation
36+
* Simple fixes tagged as “good first issue”
37+
* Good idea but not prioritised: “help wanted”
38+
39+
#### Addressing / channeling questions/support
40+
* We expect discussion, so features, bugs can be tagged as “question” until a full understanding of the need is achieved
41+
42+
#### Allocating bugs to releases
43+
* High severity bugs go into the next patch release
44+
* Otherwise they go into the next minor release
45+
46+
#### Triaging feature requests:
47+
* Differentiate between core features and kpt functions
48+
* Significant features and breaking changes MUST be described in a “kpt improvement proposal”
49+
50+
#### PR Reviews
51+
* TBD
52+
53+
### Merging PRs
54+
55+
A PR can only be merged only if:
56+
* All tests are passing for that PR
57+
* The PR has has approvals from two maintainers from two organizations. The GitHub Review tool is used to approve
58+
* The PR's milestone is set to the current Minor or Patch release. Ensure that in the course of Minor and Patch release work,
59+
you never merge PRs labeled with the next Major version. For example, while v1 is the current Major version,
60+
we do not merge PRs labeled with v2.x.
61+
62+
### The release process
63+
64+
Corresponding to SemVer, we have three different types of release:
65+
* Major: 1.0.0, 2.0.0, etc. Breaks compatibility with previous releases.
66+
* Minor: 2.1.0, 2.2.0, etc. Maintains compatibility per our SemVer rules above, but may add new features, fix bugs.
67+
* Patch: 2.1.1, 2.1.2, etc. Maintains compatibility, adds no features, but fixes bugs.
68+
69+
Major releases and Minor releases are done by tagging *main* with the version number, and then running the release scripts (TBD).
70+
71+
Patch versions are done by a more complex process. They start from the release-X.Y branch and cherry-pick from main.
72+
A release branch is forked from the last minor release, and is then maintained in parallel with the *main*:
73+
74+
75+
```
76+
---- v1.3.0 ---- Fix #1 --- Feature #2 --- Fix #3 --- ... [main]
77+
\ \ \
78+
release-1.3 ---- Fix #1 ------------- Fix #3 --- v1.3.1
79+
```
80+
81+
Only fixes are pulled from `main` onto the `release-X.Y` branch. Features are not.

0 commit comments

Comments
 (0)