From 06d3009c5dacfd7765911a273bc0ae5e4d60d162 Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Tue, 15 Jun 2021 20:47:30 +0200 Subject: [PATCH] Declare explicit roles in procedures In Foreman Release there were no explicit roles so those were added. It also aligns Foreman and Katello naming for the Release Engineer role. This implements point 1 and 3 as laid out in the communication RFC https://community.theforeman.org/t/branching-release-process-communication/23965 The second point is something humans should adopt. --- lib/tool_belt/commands/procedure.rb | 12 ++++++++++++ procedures/foreman/branch.md.erb | 6 ++++++ procedures/foreman/release.md.erb | 22 ++++++++++++++++++++++ procedures/katello/branch.md.erb | 11 +++++++++-- procedures/katello/release.md.erb | 9 ++++++++- 5 files changed, 57 insertions(+), 3 deletions(-) diff --git a/lib/tool_belt/commands/procedure.rb b/lib/tool_belt/commands/procedure.rb index 8e27a2ea..31b259ed 100644 --- a/lib/tool_belt/commands/procedure.rb +++ b/lib/tool_belt/commands/procedure.rb @@ -10,6 +10,8 @@ class ProcedureCommand < Clamp::Command value end parameter "target-date", "Target date that the procedure should be completed on" + parameter "owner", "The release owner's username on Discourse" + parameter "engineer", "The release engineer's username on Discourse" def execute parsed_date = Date.parse(target_date) @@ -20,6 +22,8 @@ def execute target_date: parsed_date, two_weeks_before: parsed_date - 14, one_week_before: parsed_date - 7, + owner: discourse_username(owner), + engineer: discourse_username(engineer), } render(project, 'branch', context) @@ -33,6 +37,8 @@ def execute value end parameter "target-date", "Target date that the procedure should be completed on" + parameter "owner", "The release owner's username on Discourse" + parameter "engineer", "The release engineer's username on Discourse" def execute version, extra = full_version.split('-', 2) @@ -51,6 +57,8 @@ def execute target_date: parsed_date, two_weeks_before: parsed_date - 14, one_week_before: parsed_date - 7, + owner: discourse_username(owner), + engineer: discourse_username(engineer), } render(project, 'release', context) @@ -94,6 +102,10 @@ def previous_release(version) parts = version.split('.') (parts[0..-2] + [(parts.last.to_i - 1).to_s]).join('.') end + + def discourse_username(name) + name.start_with?('@') ? name : "@#{name}" + end end end end diff --git a/procedures/foreman/branch.md.erb b/procedures/foreman/branch.md.erb index d160cb5d..ff1b6e9a 100644 --- a/procedures/foreman/branch.md.erb +++ b/procedures/foreman/branch.md.erb @@ -1,5 +1,11 @@ [ ] Make this post a wiki +## Roles + +* Release Owner: <%= owner %> +* Release Engineer: <%= engineer %> +* Installer Maintainer: @ + # Prep Week: <%= two_weeks_before %> to <%= two_weeks_before + 4 %> ## Installer Maintainer diff --git a/procedures/foreman/release.md.erb b/procedures/foreman/release.md.erb index 4526b7bf..fb4bccbc 100644 --- a/procedures/foreman/release.md.erb +++ b/procedures/foreman/release.md.erb @@ -1,7 +1,15 @@ [ ] Make this post a wiki +## Roles + +* Release Owner: <%= owner %> +* Release Engineer: <%= engineer %> +* Installer Maintainer: @ + # Manual updates: <%= target_date %> +## Release Engineer + - [ ] Update manual if applicable for any additional installation steps - Update [release notes section](gh-pages/_includes/manuals/<%= short_version %>/1.2_release_notes.md) in the manual: - [ ] Release notes: bullet point list by category of all changes, include link to bug numbers. You can auto-generate changes using the [release notes script](https://github.com/theforeman/theforeman.org/blob/gh-pages/scripts/release_notes.rb). @@ -17,8 +25,13 @@ # Preparing code: <%= target_date %> +## 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 + +## Release Owner + <% unless (is_rc || full_version.end_with?('0')) %>- [ ] 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.rb](https://gist.github.com/tbrisker/3320097f1d8c9abfb2dbcf8d8e216bba) can be used to generate a comparison between the two. @@ -27,6 +40,8 @@ # Tagging a release: <%= target_date %> +## Release Owner + - In foreman <%= short_version %>-stable: - [ ] Make sure [test_<%= short_version.tr('.', '_') %>_stable](https://ci.theforeman.org/job/test_<%= short_version.tr('.', '_') %>_stable/) is green <% if (is_rc || full_version.end_with?('0')) %> - [ ] run `make -C locale tx-update` @@ -39,6 +54,9 @@ - In foreman-installer <%= short_version %>-stable: - [ ] Tag the release using [tag.sh](https://gist.github.com/tbrisker/d51cedea51ccbcca00e72c1fc61550fe) `tag.sh <%= full_version %> && git push upstream <%= short_version %>-stable --follow-tags` - [ ] Run the Jenkins [Tarballs Release](https://ci.theforeman.org/job/tarballs-release/) to create tarballs + +## Release Engineer + - [ ] Update release version similar to [here](https://github.com/theforeman/theforeman-rel-eng/commit/2029a9688da00d9c385c3438dd71b594ba5f728e) - [ ] Sign Tarballs - [ ] [Download](https://github.com/theforeman/theforeman-rel-eng/blob/master/download_tarballs) @@ -49,6 +67,8 @@ Note: If for some reason there was an issue with the tarballs that required uplo # Packaging a release: <%= target_date %> +## 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) @@ -77,6 +97,8 @@ Note: If for some reason there was an issue with the tarballs that required uplo # After the packages have been released +# Release Owner + <% unless is_rc %>- [ ] Update the versions on the website in [version](https://github.com/theforeman/theforeman.org/blob/gh-pages/_includes/version.html) and [latest news](https://github.com/theforeman/theforeman.org/blob/gh-pages/_includes/latest_news.html) <% end -%> <% if full_version.end_with?('0') %>- [ ] Update the `foreman_version` to <%= short_version %> and add the <%= short_version %> in `foreman_versions` list in website's [`_config.yml`](https://github.com/theforeman/theforeman.org/blob/gh-pages/_config.yml) file diff --git a/procedures/katello/branch.md.erb b/procedures/katello/branch.md.erb index 78fdb553..9a3f9beb 100644 --- a/procedures/katello/branch.md.erb +++ b/procedures/katello/branch.md.erb @@ -1,3 +1,10 @@ +[ ] Make this post a wiki + +## Roles + +* Release Owner: <%= owner %> +* Release Engineer: <%= engineer %> + # One Month Prior to Branch Date ## Release Owner @@ -31,7 +38,7 @@ - [ ] [foreman_proxy_content](https://github.com/theforeman/puppet-foreman_proxy_content) - [ ] [katello](https://github.com/theforeman/puppet-katello) -## Release Packager +## Release Engineer - [ ] Ensure tool_belt config is merged and output from `./tools.rb koji configs/katello/<%= release %>.yaml` matches expectations @@ -65,7 +72,7 @@ find $GITDIR/theforeman.org/plugins/katello/$VERSION/api -name "*.json" -type f -delete sed -i "/layout: /d" $GITDIR/theforeman.org/plugins/katello/$VERSION/api/index.md -## Release Packager +## Release Engineer - [ ] Run `./tools koji configs/katello/<%= release %>.yaml` from [tool_belt](https://github.com/theforeman/tool_belt) to create Koji tags - [ ] Run `./tools mash-scripts configs/katello/<%= release %>.yaml` from [tool_belt](https://github.com/theforeman/tool_belt) to create Koji mash configs and open PR to tool_belt to commit diff --git a/procedures/katello/release.md.erb b/procedures/katello/release.md.erb index 92b0637f..a0744344 100644 --- a/procedures/katello/release.md.erb +++ b/procedures/katello/release.md.erb @@ -1,3 +1,10 @@ +[ ] Make this post a wiki + +## Roles + +* Release Owner: <%= owner %> +* Release Engineer: <%= engineer %> + # When Ready to Release ## Release Owner @@ -22,7 +29,7 @@ # Once Source is Available -## Release Packager +## Release Engineer - [ ] Update `katello`, `katello-repos` and `rubygem-katello` in [foreman-packaging](https://github.com/theforeman/foreman-packaging) [rpm/<%= short_version %>](https://github.com/theforeman/theforeman-rel-eng/blob/master/bump_rpm_packaging) branch (replace <%= short_version %> with the matching Foreman version): - [ ] `obal update katello katello-repos rubygem-katello --version <%= version %><% if is_rc %> --prerelease <%= extra %> --release keep<% end %>`