@@ -14,25 +14,25 @@ Things you should check before making a release:
14
14
- Check the
15
15
[ Metal3 release process] ( https://github.com/metal3-io/metal3-docs/blob/main/processes/releasing.md )
16
16
for high-level process and possible follow-up actions
17
- - Verify CAPI go module is uplifted in root, ` api/ ` and ` test/ ` go modules and
18
- ` cluster-api/test ` module in ` test/ ` go module. Prior art:
19
- [ # 1157 ] ( https://github.com/metal3-io/cluster-api-provider-metal3/pull/1157 )
20
- - Verify controller Go modules use latest corresponding CAPI modules. Prior art:
21
- [ # 1145 ] ( https://github.com/metal3-io/ cluster-api-provider-metal3/pull/1145 )
22
- - Verify BMO's ` apis ` and ` pkg/hardwareutils ` dependencies are the latest. Prior
23
- art:
24
- [ # 1163 ] ( https://github.com/metal3-io/cluster-api-provider-metal3/pull/1163 )
25
- - Uplift IPAM ` api ` dependency,
26
- [ container image version ] ( https://github.com/metal3-io/cluster-api-provider-metal3/blob/main/config/ipam/image_patch.yaml )
27
- , and
28
- [ manifest resource ] ( https://github.com/metal3-io/cluster- api-provider-metal3/blob/main/config/ipam/kustomization.yaml )
29
- . Prior art:
30
- [ # 999 ] ( https://github.com/metal3-io/cluster-api-provider-metal3/pull/999 )
31
- - Verify any other direct or indirect dependency is uplifted to close any
32
- public vulnerabilities
33
-
34
- Use the ` ./hack/verify-release.sh ` script as helper to identify possible
35
- issues to be addressed before creating any release tags.
17
+ - Use the ` ./hack/verify-release.sh ` script as helper to identify possible
18
+ issues to be addressed before creating any release tags. It verifies issues
19
+ like:
20
+ - Verify CAPI go module is uplifted in root, ` api/ ` and ` test/ ` go modules and
21
+ ` cluster-api/test ` module in ` test/ ` go module. Prior art:
22
+ [ # 1157 ] ( https://github.com/metal3-io/cluster-api-provider-metal3/pull/1157 )
23
+ - Verify controller Go modules use latest corresponding CAPI modules. Prior art:
24
+ [ # 1145 ] ( https://github.com/metal3-io/cluster-api-provider-metal3/pull/1145 )
25
+ - Verify BMO's ` apis ` and ` pkg/hardwareutils ` dependencies are the latest. Prior
26
+ art:
27
+ [ # 1163 ] ( https://github.com/metal3-io/cluster-api-provider-metal3/pull/1163 )
28
+ - Uplift IPAM ` api ` dependency,
29
+ [ container image version ] ( https://github.com/metal3-io/cluster-api-provider-metal3/blob/main/config/ipam/image_patch.yaml )
30
+ , and
31
+ [ manifest resource ] ( https://github.com/metal3-io/cluster-api-provider-metal3/blob/main/config/ipam/kustomization.yaml )
32
+ . Prior art:
33
+ [ # 999 ] ( https://github.com/metal3-io/cluster-api-provider-metal3/pull/999 )
34
+ - Verify any other direct or indirect dependency is uplifted to close any
35
+ public vulnerabilities
36
36
37
37
## Permissions
38
38
@@ -51,7 +51,11 @@ should not be given permissions directly.
51
51
52
52
## Process
53
53
54
- CAPM3 uses [ semantic versioning] ( https://semver.org ) . For version ` v1.x.y ` :
54
+ CAPM3 uses [ semantic versioning] ( https://semver.org ) .
55
+
56
+ - Regular releases: ` v1.x.y `
57
+ - Beta releases: ` v1.x.y-beta.z `
58
+ - Release candidate releases: ` v1.x.y-rc.z `
55
59
56
60
### Repository setup
57
61
@@ -85,11 +89,12 @@ This triggers two things:
85
89
page, and draft release will be visible on top of the
86
90
[ Releases] ( https://github.com/metal3-io/cluster-api-provider-metal3/releases )
87
91
page.
88
- - Quay starts building release image with the release tag. Make sure the
89
- release is built successfully in
90
- [ Quay builds page] ( https://quay.io/repository/metal3-io/cluster-api-provider-metal3?tab=builds ) .
91
- If the release tag build is not visible, check if the build trigger is
92
- enabled. Quay disables build trigger sometimes when build has failed few times.
92
+ - GH action ` build-images-action ` starts building release image with the release
93
+ tag in Jenkins, and it gets pushed to Quay. Make sure the release tag is
94
+ visible in
95
+ [ Quay tags page] ( https://quay.io/repository/metal3-io/cluster-api-provider-metal3?tab=tags ) .
96
+ If the release tag build is not visible, check if the action has failed and
97
+ retrigger as necessary.
93
98
94
99
We also need to create one or more tags for the Go modules ecosystem:
95
100
@@ -103,17 +108,36 @@ We also need to create one or more tags for the Go modules ecosystem:
103
108
otherwise it might create incorrect release notes. Push both of the tags to
104
109
` origin ` .
105
110
111
+ ### Release notes
112
+
113
+ Next step is to clean up the release note manually.
114
+
115
+ - Check for duplicates, reverts, and incorrect classifications of PRs, and
116
+ whatever release creation tagged to be manually checked.
117
+ - For any superseded PRs (like same dependency uplifted multiple times, or
118
+ commit revertions) that provide no value to the release, move them to
119
+ Superseded section. This way the changes are acknowledged to be part of the
120
+ release, but not overwhelming the important changes contained by the release.
121
+ - If the release you're making is not a new major release, new minor release,
122
+ or a new patch release from the latest release branch, uncheck the box for
123
+ latest release.
124
+ - If it is a release candidate (RC) or a pre-release, tick pre-release box.
125
+ - Save the release note as a draft, and have others review it.
126
+
106
127
### Release artifacts
107
128
108
129
We need to verify all release artifacts are correctly built or generated by
109
- the release workflow. For a release, we should have the following artifacts:
130
+ the release workflow.
131
+
132
+ We can use ` ./hack/verify-release.sh ` to check for existence of release artifacts,
133
+ which should include the following:
110
134
111
135
Git tags pushed:
112
136
113
137
- Primary release tag: ` v1.x.y `
114
138
- Go module tags: ` api/v1.x.y ` , ` test/v1.x.y `
115
139
116
- Container images built and tagged at Quay registry:
140
+ Container images at Quay registry:
117
141
118
142
- [ cluster-api-provider-metal3: v1 .x.y] ( https://quay.io/repository/metal3-io/cluster-api-provider-metal3?tab=tags )
119
143
@@ -124,23 +148,10 @@ Files included in the release page:
124
148
- A cluster template - ` cluster-template.yaml `
125
149
- A file containing an example of variables to set - ` example_variables.rc `
126
150
127
- ### Release notes
128
-
129
- Next step is to clean up the release note manually.
151
+ ### Make the release
130
152
131
- - Check for duplicates, reverts, and incorrect classifications of PRs, and
132
- whatever release creation tagged to be manually checked.
133
- - For any superseded PRs (like same dependency uplifted multiple times, or
134
- commit revertions) that provide no value to the release, move them to
135
- Superseded section. This way the changes are acknowledged to be part of the
136
- release, but not overwhelming the important changes contained by the release.
137
- - If the release you're making is not a new major release, new minor release,
138
- or a new patch release from the latest release branch, uncheck the box for
139
- latest release.
140
- - If it is a release candidate (RC) or a pre-release, tick pre-release box.
141
- - Save the release note as a draft, and have others review it. Use the
142
- ` ./hack/verify-release.sh ` script as helper to verify release content.
143
- - Publish the release.
153
+ After everything is checked out, hit the ` Publish ` button your GitHub draft
154
+ release!
144
155
145
156
## Post-release actions for new release branches
146
157
@@ -155,6 +166,7 @@ keywords are implemented in Jenkins JJB, and in project-infra, and have been run
155
166
at least once in the PR targeting the branch in question.
156
167
157
168
NOTE: Branch protection rules need repository ` admin ` rights to modify.
169
+ Organization admins and security team members can help you.
158
170
159
171
### Update README.md and build badges
160
172
0 commit comments