Skip to content

Commit 2b8f1f3

Browse files
draft of a new simplified release process (#297)
1 parent 1e69bc2 commit 2b8f1f3

File tree

1 file changed

+102
-19
lines changed

1 file changed

+102
-19
lines changed

doc/sphinx/devDoc/release.rst

Lines changed: 102 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,22 @@
11
Release 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+
420
To 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

Comments
 (0)