Merge "Modify the TSDR documentation"
[docs.git] / docs / release-process / branch-cutting.rst
1 **************
2 Branch Cutting
3 **************
4
5 This page documents the current branch cutting tasks that are needed
6 to be performed at various milestones and which team has the necessary
7 permissions in order to perform the necessary task in Parentheses.
8
9 M5 Offset 2
10 ===========
11
12 JJB
13 ---
14
15 - Export ${NEXT_RELEASE} and ${CURR_RELEASE} with new and current release names.
16   **(releng/builder committers)**
17
18   .. code-block:: bash
19
20      export NEXT_RELEASE="Nitrogen"
21      export CURR_RELEASE="Carbon"
22
23 - Change JJB yaml files from `stream:carbon` branch pointer from `master -> stable/${CURR_RELEASE,,}`
24   and create new `stream: ${NEXT_RELEASE,,}` branch pointer to branch master. This
25   requires handling two different file formats interspersed with in autorelease projects.
26   **(releng/builder committers)**
27
28   .. code-block:: yaml
29
30       stream:
31         - Nitrogen:
32             branch: master
33         - Carbon:
34             branch: stable/carbon
35
36   .. code-block:: yaml
37
38       - project:
39           name: aaa-carbon
40           jobs:
41             - '{project-name}-verify-{stream}-{maven}-{jdks}'
42           stream: nitrogen
43           branch: master
44
45   - The above manual process of updating individual files is automated with the script.
46     **(releng/builder committers)**
47
48   .. code-block:: bash
49
50       cd builder/scripts/branch_cut
51       ./branch_cutter.sh -n $NEXT_RELEASE -c $CURR_RELEASE
52
53 - Review and submit the changes to releng/builder project. **(releng/builder committers)**
54
55 Autorelease
56 -----------
57
58 - Block submit permissions for registered users and elevate RE's committer rights on gerrit.
59   **(Helpdesk)**
60
61   .. figure:: images/gerrit-update-committer-rights.png
62
63   .. note::
64
65      Enable Exclusive checkbox override any existing persmissions.
66
67 - Setup releng/autorelease repository.
68   **(Release Engineering Team)**
69
70   .. code-block:: bash
71
72       git review -s
73       git submodule foreach 'git review -s'
74       git checkout master
75       git submodule foreach 'git checkout master'
76       git pull --rebase
77       git submodule foreach 'git pull --rebase'
78
79 - Create stable/${CURR_RELEASE} branches based on HEAD master.
80   **(Release Engineering Team)**
81
82   .. code-block:: bash
83
84       git submodule foreach 'git checkout -b stable/${CURR_RELEASE,,} origin/master'
85       git push gerrit stable/${CURR_RELEASE,,}
86       git submodule foreach 'git push gerrit stable/${CURR_RELEASE,,}'
87
88 - Enable create reference permissions on gerrit for RE's to submit .gitreview patches.
89   **(Helpdesk)**
90
91   .. figure:: images/gerrit-update-create-reference.png
92
93   .. note::
94
95      Enable Exclusive checkbox override any existing persmissions.
96
97 - Contribute .gitreview updates to stable/${CURR_RELEASE,,}.
98   **(Release Engineering Team)**
99
100   .. code-block:: bash
101
102       git submodule foreach sed -i -e "s#defaultbranch=master#defaultbranch=stable/${CURR_RELEASE,,}#" .gitreview
103       git submodule foreach git commit -asm "Update .gitreview to stable/${CURR_RELEASE,,}"
104       git submodule foreach 'git review -t nitrogen-br-cut'
105       sed -i -e "s#defaultbranch=master#defaultbranch=stable/${CURR_RELEASE,,}#" .gitreview
106       git add .gitreview
107       git commit -s -v -m "Update .gitreview to stable/${CURR_RELEASE,,}"
108       git review -t  ${NEXT_RELEASE,,}-branch-cut
109
110 - Merge all .gitreview patches submitted in the above step. **(Release Engineering Team)**
111 - Remove create reference permissions set on gerrit for RE's. **(Helpdesk)**
112 - Version bump master by x.(y+1).z. **(Release Engineering Team)**
113
114   .. code-block:: bash
115
116       git checkout master
117       git submodule foreach 'git checkout master'
118       pip install lftools
119       lftools version bump ${CURR_RELEASE}
120
121 - Exclude version bump changes to release notes. **(Release Engineering Team)**
122
123   .. code-block:: bash
124
125       git checkout pom.xml scripts/
126
127 - Push version bump master changes to gerrit. **(Release Engineering Team)**
128
129   .. code-block:: bash
130
131       git submodule foreach 'git commit -asm "Bump versions by x.(y+1).z for next dev cycle"'
132       git submodule foreach 'git review -t nitrogen-br-cut'
133
134 - Merge all version bump patches in the order of dependencies. **(Release Engineering Team)**
135 - Re-enable submit permissions for registered users and disable elevated RE committer rights on gerrit. **(Helpdesk)**
136 - Notify release list on branch cutting work completion. **(Release Engineering Team)**