11Release Process
22===============
33
4+ General release process
5+ -----------------------
6+
7+ The versioning for IOR is encoded in the ``META `` file in the root of the
8+ repository. The nomenclature is
9+
10+ * 3.2.0 designates a proper release
11+ * 3.2.0rc1 designates the first release candidate in preparation for the 3.2.0
12+ release
13+ * 3.2.0+dev indicates development towards 3.2.0 prior to a feature freeze
14+ * 3.2.0rc1+dev indicates development towards 3.2.0's first release candidate
15+ after a feature freeze
16+
17+ Building a release of IOR
18+ -------------------------
19+
420To build a new version of IOR::
521
622 $ docker run -it ubuntu bash
@@ -10,29 +26,96 @@ To build a new version of IOR::
1026 $ cd ior
1127 $ ./travis-build.sh
1228
13- To create a new release candidate from RC,
29+ Feature freezing for a new release
30+ ----------------------------------
1431
15- 1. Disable the ``check-news `` option in ``AM_INIT_AUTOMAKE `` inside configure.ac
16- 2. Append "rcX" to the ``Version: `` field in META where X is the release
17- candidate number
18- 3. Build a release package as described above
32+ 1. Branch `major.minor ` from the commit at which the feature freeze should take
33+ effect.
34+ 2. Append the "rc1+dev" designator to the Version field in the META file
35+ 3. Commit and push this new branch
36+ 2. Update the ``Version: `` field in META `of the master branch ` to be the `next `
37+ release version, not the one whose features have just been frozen.
1938
20- To create a new minor release of IOR,
39+ For example, to feature-freeze for version 3.2::
2140
22- 1. Build the rc branch as described above
23- 2. Create a release on GitHub which creates the appropriate tag
24- 3. Upload the source distributions generated by travis-build.sh
41+ $ git checkout 11469ac
42+ $ git checkout -B 3.2
43+ $ # update the ``Version:`` field in ``META`` to 3.2.0rc1+dev
44+ $ git add META
45+ $ git commit -m "Update version for feature freeze"
46+ $ git push upstream 3.2
47+ $ git checkout master
48+ $ # update the ``Version:`` field in ``META`` to 3.3.0+dev
49+ $ git add META
50+ $ git commit -m "Update version number"
51+ $ git push upstream master
2552
26- To create a micro branch of IOR (e.g., if a release needs a hotfix),
53+ Creating a new release candidate
54+ --------------------------------
2755
28- 1. Check out the relevant release tagged in the rc branch (e.g., ``3.2.0 ``)
29- 2. Create a branch with the major.minor name (e.g., ``3.2 ``) from that tag
30- 3. Update the ``Version: `` in META
31- 4. Apply hotfix(es) to that major.minor branch
32- 5. Create the major.minor.micro release on GitHub
56+ 1. Check out the appropriate commit from the `major.minor ` branch
57+ 2. Disable the ``check-news `` option in ``AM_INIT_AUTOMAKE `` inside configure.ac
58+ 3. Remove the "+dev" designator from the Version field in META
59+ 4. Build a release package as described above
60+ 5. Revert the change from #2 (it was just required to build a non-release tarball)
61+ 5. Tag and commit the updated META so one can easily recompile this rc from git
62+ 6. Update the "rcX" number and add "+dev" back to the ``Version: `` field in
63+ META. This will allow anyone playing with the tip of this branch to see that
64+ this the state is in preparation of the next rc, but is unreleased because of
65+ +dev.
66+ 7. Commit
3367
34- To initiate a feature freeze,
68+ For example to release 3.2.0rc1::
3569
36- 1. Merge the master branch into the rc branch
37- 2. Update the ``Version: `` field in META `of the master branch ` to be the `next `
38- release version, not the one whose features have just been frozen
70+ $ git checkout 3.2
71+ $ # edit configure.ac and remove the check-news option
72+ $ # remove +dev from the Version field in META (Version: 3.2.0rc1)
73+ $ # build
74+ $ git checkout configure.ac
75+ $ git add META
76+ $ git commit -m "Release candidate for 3.2.0rc1"
77+ $ git tag 3.2.0rc1
78+ $ # uptick rc number and re-add +dev to META (Version: 3.2.0rc2+dev)
79+ $ git add META # should contain Version: 3.2.0rc2+dev
80+ $ git commit -m "Uptick version after release"
81+ $ git push --tags
82+
83+ Applying patches to a new microrelease
84+ --------------------------------------
85+
86+ If a released version 3.2.0 has bugs, cherry-pick the fixes from master into the
87+ 3.2 branch::
88+
89+ $ git checkout 3.2
90+ $ git cherry-pick cb40c99
91+ $ git cherry-pick aafdf89
92+ $ git push upstream 3.2
93+
94+ Once you've accumulated enough bugs, move on to issuing a new release below.
95+
96+ Creating a new release
97+ ----------------------
98+
99+ 1. Check out the relevant `major.minor ` branch
100+ 2. Remove any "rcX" and "+dev" from the Version field in META
101+ 3. Update NEWS with the release notes
102+ 4. Build a release package as described above
103+ 5. Tag and commit the updated NEWS and META so one can easily recompile this
104+ release from git
105+ 6. Update the Version field to the next rc version and re-add "+dev"
106+ 7. Commit
107+ 8. Create the major.minor.micro release on GitHub from the associated tag
108+
109+ For example to release 3.2.0::
110+
111+ $ git checkout 3.2
112+ $ vim META # 3.2.0rc2+dev -> 3.2.0
113+ $ vim NEWS # add release notes from ``git log --oneline 3.2.0rc1..``
114+ $ # build
115+ $ git add NEWS META
116+ $ git commit -m "Release v3.2.0"
117+ $ git tag 3.2.0
118+ $ vim META # 3.2.0 -> 3.2.1rc1+dev
119+ $ git add META
120+ $ git commit -m "Uptick version after release"
121+ $ git push --tags
0 commit comments