-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathbranch.md.erb
126 lines (101 loc) · 10.1 KB
/
branch.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
## Roles
* Release Owner: <%= owner %>
* Release Engineer: <%= engineer %>
* Installer Maintainer: @
# Prep Week: <%= two_weeks_before %> to <%= two_weeks_before + 4 %>
## Installer Maintainer
- Make releases of installer modules
- Tier 0 (no dependencies)
- [ ] [candlepin](https://github.com/theforeman/puppet-candlepin)
- [ ] [certs](https://github.com/theforeman/puppet-certs)
- [ ] [dhcp](https://github.com/theforeman/puppet-dhcp)
- [ ] [dns](https://github.com/theforeman/puppet-dns)
- [ ] [foreman](https://github.com/theforeman/puppet-foreman)
- [ ] [pulpcore](https://github.com/theforeman/puppet-pulpcore)
- [ ] [puppet](https://github.com/theforeman/puppet-puppet)
- [ ] [puppetserver_foreman](https://github.com/theforeman/puppet-puppetserver_foreman)
- [ ] [tftp](https://github.com/theforeman/puppet-tftp)
- Tier 1 (Dependencies on Tier 0)
- [ ] [foreman_proxy](https://github.com/theforeman/puppet-foreman_proxy)
- Tier 2 (Dependencies on Tier 1)
- [ ] [foreman_proxy_content](https://github.com/theforeman/puppet-foreman_proxy_content)
- [ ] [katello](https://github.com/theforeman/puppet-katello)
## Release Owner
- [ ] Ensure headline features planned for the release have been merged or push them off to the next release.
- Translations:
- [ ] Update locales in foreman __develop__: `make -C locale tx-update`
- [ ] Ask plugin authors to start extracting i18n strings and pushing the changes into develop/master git branches so Transifex can pick it up
- [ ] Announce string freeze date on Discourse and [send announcement](https://www.transifex.com/foreman/communication/?q=project%3Aforeman)
- [ ] Update [foreman-dev](https://community.theforeman.org/c/development) with [translations status](https://www.transifex.com/foreman/foreman/languages/) (click on Report) to encourage 100% translations before release
# Stabilization Week: <%= one_week_before %> to <%= one_week_before + 4 %>
## Release Owner
- [ ] Announce start of stabilization week to discourse [development category](https://community.theforeman.org/c/development).
- [ ] Request new Hammer CLI release from maintainers if needed.
- Prepare the manual for the new version:
- [ ] Update installer options section of nightly manual using the [get-params script](https://github.com/theforeman/theforeman.org/blob/gh-pages/scripts/installer/get-params)
- [ ] Copy [website manual content](https://github.com/theforeman/theforeman.org/tree/gh-pages/manuals) from nightly to <%= release %> and update version numbers mentioned in it.
- `cp -r manuals/nightly manuals/<%= release %>`
- `cp -r _includes/manuals/nightly _includes/manuals/<%= release %>`
- `sed -i 's/nightly/<%= release %>/i' manuals/<%= release %>/*.md`
- `sed -i '/previous_version/ s/: .\+/: "<%= release %>"/' manuals/nightly/index.md`
- `sed -i '/- nightly/a \ \ - "<%= release %>"' _config.yml`
- [ ] Clean up deprecation and upgrade warnings from nightly manual for in both [foreman.adoc](https://github.com/theforeman/foreman-documentation/blob/master/guides/doc-Release_Notes/topics/foreman.adoc) and [katello.adoc](https://github.com/theforeman/foreman-documentation/blob/master/guides/doc-Release_Notes/topics/katello.adoc).
- [ ] Add new languages that are at a [reasonable completion on Transifex](https://www.transifex.com/foreman/foreman/foreman/) to __develop__
## Release Engineer
- Create new GPG key for release. See [GPG_Keys](https://github.com/theforeman/theforeman-rel-eng/#generating-a-new-gpg-key-for-a-xy-release) if needed.
- [ ] <%= rel_eng_script('generate_gpg') %>
- [ ] <%= rel_eng_script('export_gpg_private') %> to back up
- [ ] <%= rel_eng_script('sign_gpg') %>
- [ ] <%= rel_eng_script('upload_gpg') %>
- Publish the key
- [ ] Use <%= rel_eng_script('export_gpg_public') %> to show the GPG key and update the website's [security.md](https://github.com/theforeman/theforeman.org/blob/gh-pages/security.md) and create a file in [static/keys](https://github.com/theforeman/theforeman.org/tree/gh-pages/static/keys)
- [ ] Use <%= rel_eng_script('upload_yum_gpg') %> to create [releases/<%= release %>/RPM-GPG-KEY-foreman](https://yum.theforeman.org/releases/<%= release %>/RPM-GPG-KEY-foreman) on yum.theforeman.org
- [ ] Commit the [settings file](https://github.com/theforeman/theforeman-rel-eng/blob/master/releases/foreman/<%= release %>/settings) to the `theforeman-rel-eng` repository
- [ ] Create new settings files for [client](https://github.com/theforeman/theforeman-rel-eng/blob/master/releases/client/<%= release %>/settings), ensure it has the rights `OSES` list and commit it too.
- [ ] Open a PR with the result of [jenkins-jobs](https://github.com/theforeman/jenkins-jobs) branching: `./branch-foreman <%= release %> KATELLO_VERSION`
- [ ] Open PR to remove any jobs that are related to end of life versions
- [ ] Open PR to add <%= release %> to [Forklift versions config](https://github.com/theforeman/forklift/blob/master/vagrant/config/versions.yaml). Once the PR is merged, upgrade pipelines will fail, so do not merge it before packaging has been branched.
# Branching: <%= target_date %>
## Release Engineer
- Branch RPM packaging
- [ ] Create a `rpm/<%= release %>` branch in [foreman-packaging](https://github.com/theforeman/foreman-packaging) based on `rpm/develop`: `git checkout rpm/develop && git pull && git checkout -b rpm/<%= release %>`
- [ ] Update `foreman_version` in `package_manifest.yaml` on the `rpm/<%= release %>` branch: `sed -i '/foreman_version:/ s/nightly/<%= release %>/' package_manifest.yaml`
- [ ] Update `katello_version` in `package_manifest.yaml` on the `rpm/<%= release %>` branch: `sed -i '/katello_version:/ s/nightly/KATELLO_VERSION_HERE/' package_manifest.yaml`
- [ ] Create release repositories in Copr by forking nightly repositories `obal copr-project copr_projects` on the `rpm/<%= release %>` branch
- [ ] Push the `rpm/<%= release %>` branch
- Branch Debian packaging
- [ ] Clone Debian nightly repos to <%= release %> using [copy/freight instructions](https://projects.theforeman.org/projects/foreman/wiki/Debian_Packaging#Branching-for-release)
- [ ] Create a `deb/<%= release %>` branch in [foreman-packaging](https://github.com/theforeman/foreman-packaging) based on `deb/develop`
## Release Owner
- [ ] Create <%= release %>-stable branches using <%= rel_eng_script('branch_project') %>
- [ ] Push <%= release %>-stable branches using <%= rel_eng_script('branch_push') %>
- [ ] Branch foreman-documentation git repository and update website for new release by following the [README instructions](https://github.com/theforeman/foreman-documentation#branching-new-release)
- [ ] Ask Hammer maintainer to branch [hammer-cli](https://github.com/theforeman/hammer-cli) and [hammer-cli-foreman](https://github.com/theforeman/hammer-cli-foreman)
The next step should only be done after all branching, including packaging, has completed.
- [ ] Bump versions to <%= develop %>-develop using <%= rel_eng_script('develop_branch_bump') %>
- [ ] Push version bumps to <%= develop %>-develop using <%= rel_eng_script('develop_branch_push') %>
- [ ] Create Redmine version <%= develop %>.0 and make sure it is shared with subprojects in [foreman](https://projects.theforeman.org/projects/foreman/settings/versions)
- [ ] Ask Hammer maintainer to bump [hammer-cli](https://github.com/theforeman/hammer-cli) and [hammer-cli-foreman](https://github.com/theforeman/hammer-cli-foreman)
# Preparing build systems: <%= target_date %>
## Release engineer
- [ ] Merge the earlier created [jenkins-jobs PR](https://github.com/theforeman/jenkins-jobs/pulls) that creates the release pipelines
- [ ] Update foreman-packaging rpm/develop to ensure nightlies build:
- [ ] rpm/develop:
- Update the build tag: `sed -i 's/fm<%= release.tr('.', '_') %>/fm<%= develop.tr('.', '_') %>/g' package_manifest.yaml`
- Set to version `<%= develop %>.0`, reset release to `1`: `sed -i '/^Version:/ s/[0-9\.]\+$/<%= develop %>.0/ ; /^%global release/ s/[0-9]\+$/1/' packages/foreman/foreman{,-{installer,proxy,release,selinux}}/*.spec packages/foreman/rubygem-hammer_cli{,_foreman}/*.spec`
- Create a changelog using `obal changelog --message '- Bump version to <%= develop %>-develop' foreman{,-{installer,proxy,release,selinux}} rubygem-hammer_cli{,_foreman}`
- Commit: `git commit -a -m 'Bump version to <%= develop %>-develop'`
- [ ] deb/develop: `scripts/changelog.rb -v <%= develop %>.0-1 -m "Bump changelog to <%= develop %>.0 to match VERSION" debian/*/*/changelog`
- [ ] Prepare build systems for <%= release %> release:
- [ ] foreman-packaging's rpm/<%= release %>
- [ ] Update `packages/foreman/foreman-release/foreman.gpg`, `mock/*.cfg`, `package_manifest.yaml` and `repoclosure/*.conf`
- [ ] foreman-packaging's deb/<%= release %>
- [ ] Update `debian/*/foreman-release/theforeman-archive-keyring.asc` from https://deb.theforeman.org/foreman.asc, you will only see changes if the key was recently updated.
- [ ] Trigger the [`foreman-packaging-rpm-<%= release %>`](https://ci.theforeman.org/job/foreman-packaging-rpm-<%= release %>-release/) job once, so that GitHub hooks are properly set up.
- [ ] Trigger the [`foreman-packaging-deb-<%= release %>`](https://ci.theforeman.org/job/foreman-packaging-deb-<%= release %>-release/) job once, so that GitHub hooks are properly set up.
# Other systems: <%= target_date %>
## Release Owner
- [ ] Create the <%= release %>.0-rc release procedure in [Development/Releases](https://community.theforeman.org/c/development/releases/20): `PROJECT=foreman VERSION=<%= release %> ./procedure_release <%= target_date %> '<%= owner %>' '<%= engineer %>' | wl-copy`
- [ ] Create a `Foreman <%= develop %> Schedule and Planning` post on [Development/Releases](https://community.theforeman.org/c/development/releases/20) using <%= rel_eng_script('schedule') %>: `./schedule <%= target_date + 1 %>` (make sure there are no conflicts with other important dates)
- [ ] Ensure current Foreman deprecations for the next release are removed in __develop__
This was based on the [wiki procedure](https://projects.theforeman.org/projects/foreman/wiki/Release_Process#Branching-for-series) and sometimes has a bit more info.