Project

General

Profile

Release Management » History » Version 18

Dominic Cleal, 08/10/2015 07:22 AM
issue tracking

1 1 Sam Kottler
h1. Release Management
2 4 Sam Kottler
3 16 Dominic Cleal
For each major (x.0) and minor release there is a release manager who is responsible for making releases happen. This person is responsible for preparing for releases, ensuring stability of the release, ensuring documentation and announcements are made and generally ensuring a high quality is made.
4 17 Dominic Cleal
5
h2. Components
6
7
Some release components are pieces of software that the project will maintain and ship (Foreman core, smart proxy etc), while others may be maintained by third parties.  In order to release, we need to try and ensure as much of this is working correctly with the release as possible.
8
9
# "Foreman":https://github.com/theforeman/foreman
10
#* branched and released as part of the release process
11
#* high level of activity, has a reasonably stable develop branch
12
#* blockers tracked in Redmine where "Release = X"
13
# "Smart proxy":https://github.com/theforeman/smart-proxy
14
#* branched and released as part of the release process
15
#* low-medium level of activity, generally has a stable develop branch
16
#* blockers tracked in Redmine's smart-proxy project where "Release = X"
17
# "Foreman SELinux":https://github.com/theforeman/foreman-selinux
18
#* branched and released as part of the release process
19
#* very low level of activity, generally has a stable develop branch
20
#* blockers tracked in Redmine's foreman-selinux project where "Release = X"
21
# "Puppet modules":https://github.com/theforeman/?utf8=%E2%9C%93&query=puppet
22
#* new major/minor releases immediately prior to Foreman releases, patch releases where required
23 18 Dominic Cleal
#* releases generally made from master or -stable branches when necessary
24 17 Dominic Cleal
#* low-high levels of activity, generally has a stable master branch
25
#* blockers usually tracked in Redmine's puppet-foreman project where "Release = X"
26
# "Foreman Installer":https://github.com/theforeman/foreman-installer
27
#* branched and released as part of the release process
28
#* composed of Puppet modules above
29
#* very low level of activity itself, generally has a stable develop branch
30
#* blockers tracked in Redmine's puppet-foreman project where "Release = X"
31
# "Debian packaging":https://github.com/theforeman/foreman-packaging/tree/deb/develop
32
#* branched and released as part of the release process
33
#* low-medium level of activity itself, generally has a stable develop branch
34
#* blockers tracked in Redmine's rpms project where "Release = X"
35
# "RPM packaging":https://github.com/theforeman/foreman-packaging/tree/rpm/develop
36
#* branched and released as part of the release process
37
#* medium level of activity itself, generally has a stable develop branch
38
#* blockers tracked in Redmine's rpms project where "Release = X"
39
# "Hammer CLI":https://github.com/theforeman/hammer-cli
40
#* branched and released in parallel to the release process
41
#* medium level of activity itself, generally has a stable develop branch
42
#* blockers tracked in Redmine's hammer-cli project
43
# "Plugins":http://projects.theforeman.org/projects/foreman/wiki/List_of_Plugins
44
#* active and larger plugins tend to be branched and released for new major Foreman versions
45
#* asynchronous release schedules, try to request any compatibility releases are done by the RC1-RC2 timeframe
46
#* blockers tracked in per-project issue trackers, either Redmine or GitHub
47
# "theforeman.org":https://github.com/theforeman/theforeman.org
48
#* copied and updated during the release process
49
#* medium level of activity itself
50
#* blockers tracked in per-release "tickets on GitHub":https://github.com/theforeman/theforeman.org/issues
51
# "Translations":https://www.transifex.com/projects/p/foreman/
52
#* updated during the release process, between branching and the .2 release
53
#* medium level of activity itself
54
#* issues tracked in Transifex per-translation
55 18 Dominic Cleal
56
h2. Issue tracking
57
58
Redmine is the primary issue tracker for Foreman core projects, where all commits to the "big four" (Foreman, proxy, installer, SELinux) must have a corresponding ticket.  This ensures that the release manager can track changes for release notes and backports.
59
60
Every closed ticket should have the "Release" flag set on commit, preferably by the release manager.
61
62
# If it contains a refactoring, set it to the next major release
63
# If it is a new feature, set it to the next major release
64
# If it fixes a regression for something only in develop, set it to the next major release...
65
# ..though if it was scheduled for an upcoming release but then got moved to a later one, consider moving both back to the upcoming release
66
# If it depends on another ticket or new dependency, set it to the next major release
67
# If it is a bug fix that contains no tests, set it to the next major release
68
# If it is a bug fix that is well-tested and seems low risk, set it to the next minor release
69
70
These aren't hard and fast rules, make decisions based on experience.  If in doubt, defer it to the next major release.
71
72
When a regression is found - that is, a negative behaviour change between the last release and the upcoming one:
73
74
# Mark the ticket as related to the ticket that caused the regression
75
# If the change causing it is not in a stable branch yet, set both tickets to the next major release
76
# Set the release flag to the upcoming release
77
78
Any open ticket with a release set is a blocker.