-
Notifications
You must be signed in to change notification settings - Fork 14
/
release.md.erb
173 lines (150 loc) · 13 KB
/
release.md.erb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
## Roles
* Release Owner: <%= owner %>
* Release Engineer: <%= engineer %>
<% unless is_first_rc -%>
* Installer Maintainer: @
<% end -%>
# Preparing code: <%= target_date %>
<% unless is_first_rc -%>
## Installer Maintainer
- [ ] Make patch releases of installer modules that have important changes
- Branch to MAJ.MIN-stable if recent changes to the module aren't suitable for patch (x.y.z) release
<% end -%>
## Release Owner
<% unless is_rc -%>
- [ ] Add a new [Redmine version](https://projects.theforeman.org/projects/foreman/settings/versions) for the next minor, unless the series is EOL. Be sure the version is set to sharing with subprojects.
<% end -%>
- [ ] Remove/change target version field for any open Redmine tickets assigned to the release still (next minor, unset it or reject)
- [ ] Ensure that code in git matches issues fixed in <%= full_version %> in redmine. [issues](https://github.com/theforeman/theforeman-rel-eng/blob/master/issues) can be used to generate a comparison between the two.
<% unless is_rc -%>
- [ ] Change Redmine version <%= full_version %> state to Closed using <%= rel_eng_script('close_redmine_version') %>
<% end -%>
# Tagging a release: <%= target_date %>
## Release Owner
- [ ] Check for open pull requests in [Foreman](https://github.com/theforeman/foreman/pulls?q=is%3Apr+is%3Aopen+branch%3A<%= short_version %>-stable), [smart-proxy](https://github.com/theforeman/smart-proxy/pulls?q=is%3Apr+is%3Aopen+branch%3A<%= short_version %>-stable), [foreman-installer](https://github.com/theforeman/foreman-installer/pulls?q=is%3Apr+is%3Aopen+branch%3A<%= short_version %>-stable) and [foreman-selinux](https://github.com/theforeman/foreman-selinux/pulls?q=is%3Apr+is%3Aopen+branch%3A<%= short_version %>-stable)
- [ ] Make sure [test_<%= short_version.tr('.', '_') %>_stable](https://ci.theforeman.org/job/test_<%= short_version.tr('.', '_') %>_stable/) and [smart-proxy<%= short_version %>-stable-test](https://ci.theforeman.org/job/smart-proxy-<%= short_version %>-stable-test/) are green using <%= rel_eng_script('verify_green_jobs') %>
<% if is_rc || is_first_ga -%>
- [ ] Run `make -C locale tx-update` in foreman <%= short_version %>-stable
<% end -%>
<% unless is_first_rc -%>
- [ ] Update release version similar to [here](https://github.com/theforeman/theforeman-rel-eng/commit/2029a9688da00d9c385c3438dd71b594ba5f728e)
<% end -%>
- Tag the projects
- [ ] Create tags using <%= rel_eng_script('tag_project') %>
- [ ] Push tags using <%= rel_eng_script('tag_push') %>
- [ ] Run the Jenkins [Tarballs Release](https://ci.theforeman.org/job/tarballs-release/) using <%= rel_eng_script('release_tarballs') %> to create tarballs
## Release Engineer
- Sign Tarballs
- [ ] <%= rel_eng_script('download_tarballs') %>
- [ ] <%= rel_eng_script('inspect_tarballs') %>
- [ ] Sign and upload detached signatures using <%= rel_eng_script('sign_tarballs') %>
Note: If for some reason there was an issue with the tarballs that required uploading new tarballs, CDN cache should be invalidated so that the builders use the updated tarballs.
# Packaging a release: <%= target_date %>
<% unless is_rc -%>
**Note** it is considered good practice to release on a day when the next day is a working day. This means no releases on Fridays or on the day before a holiday.
<% end -%>
## Release Engineer
[Background documentation](https://projects.theforeman.org/projects/foreman/wiki/Release_Process#Packaging-a-release)
- Update [foreman-packaging](https://github.com/theforeman/foreman-packaging) branches
- [ ] rpm/<%= short_version %> using <%= rel_eng_script('bump_rpm_packaging') %>
- [ ] deb/<%= short_version %> using <%= rel_eng_script('bump_deb_packaging') %>
- [ ] Wait for packages to be built using <%= rel_eng_script('wait_packaging') %> (checks [rpm/<%= short_version %>](https://ci.theforeman.org/job/foreman-packaging-rpm-<%= short_version %>-release/) and [deb/<%= short_version %>](https://ci.theforeman.org/job/foreman-packaging-deb-<%= short_version %>-release/)). This takes a while so you can already start on the manual updates.
- Check for outstanding PRs against <%= short_version %> packaging, and merge if possible:
- [ ] [rpm/<%= short_version%>](https://github.com/theforeman/foreman-packaging/pulls?q=is%3Apr+is%3Aopen+base%3Arpm%2F<%= short_version %>)
- [ ] [deb/<%= short_version%>](https://github.com/theforeman/foreman-packaging/pulls?q=is%3Apr+is%3Aopen+base%3Adeb%2F<%= short_version %>)
- Sign the RPMs in the release
<% if Gem::Version.new(foreman_version) < Gem::Version.new('3.9') -%>
- [ ] <%= rel_eng_script('download_rpms') %>
- [ ] <%= rel_eng_script('sign_rpms') %>
- [ ] <%= rel_eng_script('upload_rpm_signatures') %>
- [ ] <%= rel_eng_script('upload_rpms') %>
<% else -%>
- [ ] <%= rel_eng_script('generate_stage_repository') %>
- [ ] <%= rel_eng_script('sign_stage_rpms') %>
- [ ] <%= rel_eng_script('upload_stage_rpms') %>
<% end -%>
- Sign RPMs for client repos (call scripts with `PROJECT=client`)
<% if Gem::Version.new(foreman_version) < Gem::Version.new('3.9') -%>
- [ ] <%= rel_eng_script('download_rpms') %>
- [ ] <%= rel_eng_script('sign_rpms') %>
- [ ] <%= rel_eng_script('upload_rpm_signatures') %>
- [ ] <%= rel_eng_script('upload_rpms') %>
<% else -%>
- [ ] <%= rel_eng_script('generate_stage_repository') %>
- [ ] <%= rel_eng_script('sign_stage_rpms') %>
- [ ] <%= rel_eng_script('upload_stage_rpms') %>
<% end -%>
- [ ] Kick off the [release pipeline](https://ci.theforeman.org/job/foreman-<%= short_version %>-release-pipeline/) by calling <%= rel_eng_script('release_pipeline') %>
- [ ] Kick off the [client pipeline](https://ci.theforeman.org/job/foreman-client-<%= short_version %>-rpm-pipeline/) by calling `PROJECT=client ./release_pipeline`
- [ ] Kick off the [plugins pipeline](https://ci.theforeman.org/job/foreman-plugins-<%= short_version %>-rpm-pipeline/) by calling <%= rel_eng_script('plugins_pipeline') %>
# Manual updates: <%= target_date %>
## Release Owner
- [ ] Update manual if applicable for any additional installation steps
- [ ] Update the [website's release notes section](https://github.com/theforeman/theforeman.org/tree/gh-pages/_includes/manuals/<%= short_version %>/1.2_release_notes.md) in the manual
- Using the [release notes script](https://github.com/theforeman/theforeman.org/blob/gh-pages/scripts/release_notes.rb): `./scripts/release_notes.rb foreman <%= version %>`
- Append CLI release notes taken from the [hammer-cli](https://github.com/theforeman/hammer-cli/blob/<%= short_version %>-stable/doc/release_notes.md) and [hammer-cli-foreman](https://github.com/theforeman/hammer-cli-foreman/blob/<%= short_version %>-stable/doc/release_notes.md) changelogs, in [theforeman.org](https://github.com/theforeman/theforeman.org/trees/gh-pages/_includes/manuals/<%= short_version %>/1.2_release_notes.md).
<% if is_rc || is_first_ga -%>
- Headline features: half a dozen important features with a few sentences description each
- Upgrade warnings: all important notices that users must be aware of before upgrading
- Deprecations: anything that will be removed in a future release
<% end -%>
- Submit this as a PR
- [ ] Update [docs.theforeman.org](https://github.com/theforeman/foreman-documentation)
- Using [redmine_release_notes](https://github.com/theforeman/foreman-documentation/blob/<%= short_version %>/guides/doc-Release_Notes/redmine_release_notes) script (see [README](https://github.com/theforeman/foreman-documentation/blob/<%= short_version %>/guides/doc-Release_Notes/README.md) as well): `./guides/doc-Release_Notes/redmine_release_notes foreman <%= version %> > ./guides/doc-Release_Notes/topics/foreman-<%= version %>.adoc`
- Append CLI release notes taken from the [hammer-cli](https://github.com/theforeman/hammer-cli/blob/<%= short_version %>-stable/doc/release_notes.md) and [hammer-cli-foreman](https://github.com/theforeman/hammer-cli-foreman/blob/<%= short_version %>-stable/doc/release_notes.md) changelogs to [`foreman-<%= version %>.adoc`](https://github.com/theforeman/foreman-documentation/tree/<%= short_version %>/guides/doc-Release_Notes/topics/foreman-<%= version %>.adoc).
<% if is_first_rc || (!is_rc && !is_first_ga) -%>
- Add `topics/foreman-<%= version %>.adoc` to `guides/doc-Release_Notes/master.adoc`: `sed -i '/x.y.z releases here/a include::topics/foreman-<%= version %>.adoc[leveloffset=+1]' guides/doc-Release_Notes/master.adoc`
<% end -%>
- Make sure [foreman-contributors.adoc](https://github.com/theforeman/foreman-documentation/blob/<%= short_version %>/guides/doc-Release_Notes/topics/foreman-contributors.adoc) is updated
- Make sure headline features, upgrade warnings and deprecations are in sync with the website
- Submit this as a PR
<% if is_first_rc -%>
- [ ] [Generate](https://github.com/theforeman/apidocs#adding-new-version) the apipie docs and raise pull request in [apidocs](https://github.com/theforeman/apidocs) repository
<% else -%>
- [ ] [Update](https://github.com/theforeman/apidocs#adding-new-version) the apipie docs and place those in the [foreman/<%= short_version %>/apidoc](https://github.com/theforeman/apidocs/tree/gh-pages/foreman/<%= short_version %>/apidoc) directory if any changes were made to the API
<% end -%>
# After the packages have been released
# Release Owner
- [ ] Update [theforeman.org](https://github.com/theforeman/theforeman.org)
<% if (is_rc && !is_first_rc) || is_first_ga -%>
- Update installer options section using the [get-params script](https://github.com/theforeman/theforeman.org/blob/gh-pages/scripts/installer/get-params) (Note: this step can only be done after packages are released)
<% end -%>
<% if is_first_rc || !is_rc -%>
- Update [`_config.yml`](https://github.com/theforeman/theforeman.org/blob/gh-pages/_config.yml)
<% if is_first_ga -%>
- Update the `foreman_version` to <%= short_version %>
<% end -%>
<% unless is_rc -%>
- Update `foreman_latest_releases`
<% end -%>
<% if is_first_rc -%>
- Add the <%= short_version %> in `foreman_versions` list
<% end -%>
<% end -%>
<% if is_first_ga -%>
- Update `web/content/index.adoc` and `web/content/js/versions.js` to declare <%= short_version %> as stable and <%= short_version_minus_two %> as unsupported
<% elsif is_first_rc -%>
- Update `web/content/index.adoc` and `web/content/js/versions.js` to add <%= short_version %> as a release candidate
<% end -%>
<% if is_first_rc -%>
- [ ] Add <%= short_version %> to the navigation in [docs.theforeman.org](https://github.com/theforeman/foreman-documentation) master
- `cp web/releases/nightly.adoc web/releases/<%= short_version %>.adoc` and modify as needed
- `cp web/releases/nightly.json web/releases/<%= short_version %>.json` and modify as needed
<% elsif is_first_ga -%>
- [ ] Update the [docs.theforeman.org](https://github.com/theforeman/foreman-documentation) master
- Update <%= short_version %> as `supported`: `sed -i '/"state":/ s/"[A-Za-z]\+",/"supported",/' web/releases/<%= short_version %>.json`
- Update <%= short_version_minus_two %> as `unsupported`: `sed -i '/"state":/ s/"[A-Za-z]\+",/"unsupported",/' web/releases/<%= short_version_minus_two %>.json`
- [ ] Update the [docs.theforeman.org](https://github.com/theforeman/foreman-documentation) <%= short_version %> DocState as `stable` in [attributes.adoc](https://github.com/theforeman/foreman-documentation/blob/<%= short_version %>/guides/common/attributes.adoc?plain=1): `sed -i '/:DocState:/ s/ .\+/ stable/' guides/common/attributes.adoc`
- [ ] Update the [docs.theforeman.org](https://github.com/theforeman/foreman-documentation) <%= short_version_minus_two %> DocState as `unsupported` in [attributes.adoc](https://github.com/theforeman/foreman-documentation/blob/<%= short_version_minus_two %>/guides/common/attributes.adoc?plain=1): `sed -i '/:DocState:/ s/ .\+/ unsupported/' guides/common/attributes.adoc`
<% end -%>
<% if is_first_rc -%>
- [ ] Create a feedback post on [Discourse](https://community.theforeman.org/) (like https://community.theforeman.org/t/foreman-3-8-release-candidate-feedback/35196)
<% end -%>
- [ ] Announce the release on [Discourse](https://community.theforeman.org/c/release-announcements/8) using <%= rel_eng_script('release_announcement') %>
- [ ] Update the topic in [#theforeman channel on Matrix](https://matrix.to/#/#theforeman:matrix.org)
- [ ] Share the release announcement on Twitter
<% if is_first_ga -%>
- [ ] Update `stable` version in [foreman-infra](https://github.com/theforeman/foreman-infra/blob/master/puppet/modules/profiles/manifests/web.pp#L24)
- [ ] Create an issue in [foreman-infra](https://github.com/theforeman/foreman-infra/issues) to archive old Debian releases (keeping <%= short_version_minus_five %> and newer)
<% end -%>
- [ ] Release pipeline will trigger [foreman-plugins-<%= short_version %>-deb-test-pipeline](https://ci.theforeman.org/job/foreman-plugins-<%= short_version %>-deb-test-pipeline/) and [foreman-plugins-<%= short_version %>-rpm-test-pipeline](https://ci.theforeman.org/job/foreman-plugins-<%= short_version %>-rpm-test-pipeline/). These don't block releases but can be used to understand known issues around plugin compatibility with Foreman <%= short_version %>.