1
1
# Release Notes Improvements
2
2
3
3
<!-- toc -->
4
+
4
5
- [ Summary] ( #summary )
5
6
- [ Motivation] ( #motivation )
6
7
- [ Goals] ( #goals )
@@ -28,13 +29,19 @@ team, this is a visible change large enough to warrant a KEP.
28
29
29
30
The current release notes process is fraught with inefficiencies that should be streamlined.
30
31
31
- - There are two different ways to generate release notes:
32
- [ relnotes] ( https://github.com/kubernetes/release/blob/master/relnotes ) and
33
- [ release-notes] ( https://github.com/kubernetes/release/tree/master/cmd/release-notes ) .
34
- - Because of this there's duplicate effort maintaining separate tools.
32
+ - There are multiple ways to generate release notes:
33
+ [ release-notes] ( https://github.com/kubernetes/release/tree/master/cmd/release-notes )
34
+ [ krel release-notes] ( https://github.com/kubernetes/release/blob/master/docs/krel/release-notes.md )
35
+ [ krel changelog] ( https://github.com/kubernetes/release/blob/master/docs/krel/changelog.md )
36
+
37
+ ` krel ` and the stand-alone ` release-notes ` tool are already re-using the
38
+ golang based libraries and are actively maintained. The former ` relnotes `
39
+ bash-script has been deprecated and therefore removed.
40
+
35
41
- We are currently shipping entire changelogs within markdown for each release.
36
- - PRs are frequently categorized within several SIGs, which the release notes team has to
37
- distill down for the sake of brevity before the release is actually cut.
42
+
43
+ <!-- TODO: this seems not an issue to me -->
44
+
38
45
- An end-user may not need to see _ every single change_ that occurred within a release.
39
46
40
47
There is room for improvement in the generation as well as the consumption of release notes.
@@ -47,19 +54,20 @@ As this is a somewhat drastic departure from the current process, this should be
47
54
approach:
48
55
49
56
- Consolidation and Clean-up
50
- - Update ` anago ` to use ` release-notes `
51
- - Replace the "Detailed Bug Fixes And Changes" section in the release notes with a new
52
- website that allows user to filter and search.
53
- - Generate a consumable JSON file via ` release-notes ` as part of the Release Team duties
54
- - Identify and stop tracking any "External Dependencies" that a vanilla Kubernetes install
55
- does not rely on. (eg. Things in ` cluster/addons ` )
57
+ - [x] Update ` anago ` to use ` krel changelog ` .
58
+ - [x] Remove the bash-based ` relnotes ` script.
59
+ - [x] Replace the "Detailed Bug Fixes And Changes" section in the release notes with a new
60
+ website that allows user to filter and search.
61
+ - [x] Generate a consumable JSON file via ` release-notes ` as part of the Release Team duties
62
+ - [ ] Identify and stop tracking any "External Dependencies" that a vanilla Kubernetes install
63
+ does not rely on. (eg. Things in ` cluster/addons ` )
56
64
- Automation
57
- - Build additional labels to classify:
58
- - API Changes
59
- - Deprecations
60
- - Urgent Upgrade Notes
61
- - Capture release notes automatically via GitHub PR webhooks.
62
- - Use milestones to capture "Known Issues" at time of release notes generation
65
+ - [x] Build additional labels to classify:
66
+ - [x] API Changes (done, since we now sort the release notes by ` kind/ ` )
67
+ - [x] Deprecations (see above)
68
+ - [x] Urgent Upgrade Notes
69
+ - [ ] Put the generated release notes JSON in to a Google Cloud Bucket
70
+ - [ ] Use milestones to capture "Known Issues" at time of release notes generation
63
71
64
72
### Non-Goals
65
73
@@ -73,7 +81,7 @@ As stated above, this effort should be split into two phases.
73
81
74
82
#### Updating Anago
75
83
76
- Currently, ` anago ` uses a
84
+ Currently, ` anago ` uses a
77
85
[ different tool] ( https://github.com/kubernetes/release/blob/master/relnotes ) to generate new
78
86
release notes with every release save for main 1.x.0 releases. We need to ensure that the
79
87
` release-notes ` tool can generate the same output as the ` relnotes ` tool to ensure consistency.
@@ -103,21 +111,15 @@ these labels to ensure less manual classification.
103
111
104
112
#### Automated release notes
105
113
106
- It should be possible to completely automate the generation and publishing of release notes. By
107
- building a Knative pipeline that is fed from GitHub PR events, we could have it grab, format,
108
- and commit new entries into the release notes website. As we don't want these notes to be
109
- published before a release goes live, we would create a "draft" flag in the ` release-notes ` JSON
110
- schema.
111
-
112
- Once a release is ready to be cut, the release notes team would then flip all the 1.x notes that
113
- have been collected to not be drafts. This would be done by cloning down the release notes
114
- website, and running the ` release-notes ` tool over the JSON and committing the new output.
115
-
116
- Example:
114
+ It should be possible to completely automate the generation and publishing of
115
+ the release notes for the [ website] ( https://relnotes.k8s.io ) . The idea is to put
116
+ the (manually) generated JSON into a Google Cloud Bucket and let the website
117
+ scrape the bucket for new notes. This can be done by placing an index.json file
118
+ side-by-side to the actual notes, like we do it in the [ current website
119
+ implementation] ( https://github.com/puerco/release-notes/blob/master/src/environments/assets.ts ) .
117
120
118
- ``` bash
119
- release-notes -i relnotes.json -p 1.15.0
120
- ```
121
+ Once a release is ready to be cut, the release notes team would then run ` krel release-notes `
122
+ which takes care of editing the Google Cloud Bucket.
121
123
122
124
### Risks and Mitigations
123
125
@@ -136,7 +138,5 @@ website that is automatically updated with minimal human interaction.
136
138
## Infrastructure Needed
137
139
138
140
A GitHub repo will need to be setup to host code for both the ` release-notes ` tool as well as the
139
- new release notes website. Said repo will also need to be integrated with Netlify for hosting. An
140
- initial design idea to power the automatic generation of release notes was to use a Knative pipeline.
141
- This would require a Kubernetes cluster to run on, as well as a GitHub token and webhook registration.
141
+ new release notes website. Said repo will also need to be integrated with Netlify for hosting.
142
142
Lastly, a DNS entry will be needed to point to the Netlify site (proposal: relnotes.k8s.io)
0 commit comments