-
Notifications
You must be signed in to change notification settings - Fork 16
/
release.md.erb
90 lines (79 loc) · 7.28 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
## Roles
* Release Owner: <%= owner %>
* Release Engineer: <%= engineer %>
# When Ready to Release
## Release Owner
- [ ] Request Hammer CLI Katello release from maintainers
- [ ] Request Virt Who Configure release from maintainers
- [ ] Request any other releases as needed from the release owners (consult the `:repos:` section of `configs/katello/<%= short_version %>.yaml`)
<% unless is_first_rc -%>
- [ ] Do Cherry-picks: Clone [tool_belt](https://github.com/theforeman/tool_belt)
- [ ] If any minor versions of Katello have been added to Redmine since the last cherry-pick, make sure to include them in `prior_releases` in configs/katello/<%= short_version %>.yaml
- [ ] Run `./tools.rb setup-environment configs/katello/<%= short_version %>.yaml`
- [ ] Run `GITHUB_ACCESS_TOKEN=<secret> ./tools.rb cherry-picks --version <%= full_version %> configs/katello/<%= short_version %>.yaml`
- [ ] Open a PR in Katello release branch. Make sure the PR name starts with [CP] to prevent our automations from adding it to Redmine issues.
- [ ] Using `git cherry-pick -x` as needed, verify tickets in the cherry_picks_<%= full_version %> file are accounted for, or additionally cherry-pick them. Recommended: Do this in tool_belt's checkout of Katello, in `repos/katello/<%= full_version %>/katello`. This way when you run cherry-picks again, tool_belt will be aware of any picks already completed.
- [ ] For any cherry-picks that are not needed (including Redmine trackers) you can add them to the `:ignores:` section of `tool_belt` in `configs/katello/<%= short_version %>.yaml`
<% end -%>
<% unless is_rc -%>
- [ ] Change Redmine version <%= full_version %> state to Closed using <%= rel_eng_script('close_redmine_version') %>: `PROJECT=katello VERSION=<%= short_version %> ./close_redmine_version` and enter your Redmine API Key when prompted.
<% end -%>
- [ ] Check for outdated deprecation warnings in the current and next release with `./tools check-deprecation-warnings configs/katello/<%= short_version %>.yaml`. Follow the instructions in the output of the command. Don't forget to create any Redmine issues needed!
- [ ] Update the `<%= foreman_version %>` branch in [foreman-documentation](https://github.com/theforeman/foreman-documentation)
- Ensure [release notes](https://github.com/theforeman/foreman-documentation/blob/<%= foreman_version %>/guides/doc-Release_Notes/topics/katello.adoc) are correct
- Headline features: important features with a few sentences description each
- Upgrade notes: all important notices that users must be aware of before upgrading
- Deprecations: features that will be removed or changed in a future version
- Using [redmine_release_notes](https://github.com/theforeman/foreman-documentation/blob/<%= foreman_version %>/guides/doc-Release_Notes/redmine_release_notes) (see [README](https://github.com/theforeman/foreman-documentation/blob/<%= foreman_version %>/guides/doc-Release_Notes/README.md) as well): `./guides/doc-Release_Notes/redmine_release_notes katello <%= version %> > ./guides/doc-Release_Notes/topics/katello-<%= version %>.adoc`
<% unless is_rc && !full_version.end_with?('1') -%>
- Add `topics/katello-<%= version %>.adoc` to `guides/doc-Release_Notes/master.adoc`: `sed '/x.y.z releases here/a include::topics/katello-<%= version %>.adoc[leveloffset=+1]' master.adoc`
<% end -%>
- Make sure [katello-contributors.adoc](https://github.com/theforeman/foreman-documentation/blob/<%= foreman_version %>/guides/doc-Release_Notes/topics/katello-contributors.adoc) is updated
- Submit this as a PR
- [ ] Open a PR (or use cherry-pick PR) against the release branch which updates `lib/katello/version.rb` to <%= full_version %>:
- [ ] `git pull` to make sure you have the latest changes
- [ ] `sed '/VERSION/ s/".\+"/"<%= full_version %>"/' lib/katello/version.rb`
- [ ] Update/add the CHANGELOG.md file: `GITHUB_ACCESS_TOKEN=<secret> ./tools changelog --version <%= full_version %> configs/katello/<%= short_version %>.yaml`
- [ ] Commit: `git commit -m "Release <%= full_version %>"`
- [ ] Ensure that the commit above is the _last_ commit and there are no commits after it. This is the commit that will get tagged. (Rearrange commits with `git rebase -i` if needed.)
- [ ] Once the PR is merged, perform the following in the Katello release branch (the real one, not your fork):
- [ ] Create upstream remote: `git remote add upstream https://github.com/Katello/katello.git`
- [ ] Fetch upstream remote: `git fetch upstream`
- [ ] Checkout upstream release branch: `git checkout upstream/KATELLO-<%= short_version %>`
- [ ] Tag: `git tag -s -m "Release <%= full_version %>" <%= full_version %>`
- [ ] Push: `git push --follow-tags` (Must be pushed directly to the release branch, as pull request merges will not preserve tags.)
- [ ] Generate .mo translation files: `make -C locale all-mo` in the katello directory
- [ ] Generate source gem: `gem build katello.gemspec`
- [ ] Ensure you have a working login and password at rubygems.org
- [ ] Push gem: `gem push katello-<%= full_version %>.gem`
- [ ] Inform the delivery team that the gem is published
# Once Source is Available
<% 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
<% if is_first_ga -%>
- [ ] Wait for Foreman <%= foreman_version %>.0 GA to be packaged and built before proceeding
<% end -%>
- [ ] Update release version similar to [here](https://github.com/theforeman/theforeman-rel-eng/commit/2029a9688da00d9c385c3438dd71b594ba5f728e)
- [ ] Update `katello`, `katello-repos` and `rubygem-katello`
- [ ] Use <%= rel_eng_script('bump_rpm_packaging') %>: `PROJECT=katello VERSION=<%= short_version %> ./bump_rpm_packaging`
- [ ] Merge packaging PR once job is green
- [ ] Use <%= rel_eng_script('wait_packaging') %> to wait for [Jenkins to build the packages](https://ci.theforeman.org/job/foreman-packaging-rpm-<%= foreman_version %>-release/)
- Sign the RPMs in the release
- [ ] <%= rel_eng_script('generate_stage_repository') %>
- [ ] <%= rel_eng_script('sign_stage_rpms') %>
- [ ] <%= rel_eng_script('upload_stage_rpms') %>
- [ ] Use <%= rel_eng_script('release_pipeline') %> to kick off the [release pipeline](https://ci.theforeman.org/job/katello-<%= short_version %>-rpm-pipeline/)
# Once release is out
## Release Owner
<% if is_first_ga -%>
- [ ] Wait for Foreman <%= foreman_version %>.0 GA to be announced before proceeding
<% end -%>
- [ ] Confirm response that the build succeeded (or if necessary, do more cherry-picks and version bumps repeating the steps above)
- [ ] Test the install and upgrade documentation for both the Katello server and smart proxy
- [ ] Post a [release announcement](https://community.theforeman.org/c/release-announcements/8)
<% if is_first_ga -%>
- [ ] Create and upload [release specific developer stable box](https://github.com/theforeman/forklift/blob/master/packer/README.md#creating-version-specific-katello-devel-boxes)
- [ ] Remove references to the oldest Katello version from [testKatello.groovy](https://github.com/theforeman/jenkins-jobs/blob/master/theforeman.org/pipelines/test/testKatello.groovy) and [katello-pipelines.yml](https://github.com/theforeman/jenkins-jobs/blob/master/centos.org/jobs/katello-pipelines.yml).
<% end -%>