Merge "l2switch Oxygen release notes"
[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 (releng/builder)
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 for the submit button to override any existing permissions.
66
67 #. Enable create reference permissions on gerrit for RE's to submit .gitreview patches.
68    **(Helpdesk)**
69
70    .. figure:: images/gerrit-update-create-reference.png
71
72    .. note::
73
74       Enable Exclusive checkbox override any existing permissions.
75
76 #.  Start the branch cut job or use the manual steps below for branch cutting autorelease. **(Release Engineering Team)**
77 #. Start the version bump job or use the manual steps below for version bump autorelease. **(Release Engineering Team)**
78 #. Merge all .gitreview patches submitted though the job or manually. **(Release Engineering Team)**
79 #. Remove create reference permissions set on gerrit for RE's. **(Helpdesk)**
80 #. Merge all version bump patches in the order of dependencies. **(Release Engineering Team)**
81 #. Re-enable submit permissions for registered users and disable elevated RE committer rights on gerrit. **(Helpdesk)**
82 #. Notify release list on branch cutting work completion. **(Release Engineering Team)**
83
84
85 Branch cut job (Autorelease)
86 ----------------------------
87 Branch cutting can be performed either through the job or manually.
88
89 #. Start the autorelease-branch-cut job
90    **(Release Engineering Team)**
91
92 Manual steps to branch cut (Autorelease)
93 ----------------------------------------
94
95 #. Setup releng/autorelease repository.
96    **(Release Engineering Team)**
97
98    .. code-block:: bash
99
100        git review -s
101        git submodule foreach 'git review -s'
102        git checkout master
103        git submodule foreach 'git checkout master'
104        git pull --rebase
105        git submodule foreach 'git pull --rebase'
106
107 #. Enable create reference permissions on gerrit for RE's to submit .gitreview patches.
108    **(Helpdesk)**
109
110    .. figure:: images/gerrit-update-create-reference.png
111
112    .. note::
113
114       Enable Exclusive check-box override any existing permissions.
115
116 #. Create stable/${CURR_RELEASE} branches based on HEAD master.
117    **(Release Engineering Team)**
118
119    .. code-block:: bash
120
121        git checkout -b stable/${CURR_RELEASE,,} origin/master
122        git submodule foreach 'git checkout -b stable/${CURR_RELEASE,,} origin/master'
123        git push gerrit stable/${CURR_RELEASE,,}
124        git submodule foreach 'git push gerrit stable/${CURR_RELEASE,,}'
125
126 #. Contribute .gitreview updates to stable/${CURR_RELEASE,,}.
127    **(Release Engineering Team)**
128
129    .. code-block:: bash
130
131        git submodule foreach sed -i -e "s#defaultbranch=master#defaultbranch=stable/${CURR_RELEASE,,}#" .gitreview
132        git submodule foreach git commit -asm "Update .gitreview to stable/${CURR_RELEASE,,}"
133        git submodule foreach 'git review -t ${CURR_RELEASE,,}-branch-cut'
134        sed -i -e "s#defaultbranch=master#defaultbranch=stable/${CURR_RELEASE,,}#" .gitreview
135        git add .gitreview
136        git commit -s -v -m "Update .gitreview to stable/${CURR_RELEASE,,}"
137        git review -t  ${CURR_RELEASE,,}-branch-cut
138
139 Version bump job (Autorelease)
140 ------------------------------
141 Version bump can performed either through the job or manually.
142
143 #. Start the autorelease-version-bump-${NEXT_RELEASE,,} job
144    **(Release Engineering Team)**
145
146    .. note::
147
148       Enabled BRANCH_CUT and disable DRY_RUN to run the job for branch cut
149       work-flow. The version bump job can be run only on the master branch.
150
151 Manual steps to version bump (Autorelease)
152 ------------------------------------------
153
154 #. Version bump master by x.(y+1).z. **(Release Engineering Team)**
155
156    .. code-block:: bash
157
158        git checkout master
159        git submodule foreach 'git checkout master'
160        pip install lftools
161        lftools version bump ${CURR_RELEASE}
162
163 #. Make sure the version bump changes does not modify anything under scripts or pom.xml.
164    **(Release Engineering Team)**
165
166    .. code-block:: bash
167
168        git checkout pom.xml scripts/
169
170 #. Push version bump master changes to gerrit. **(Release Engineering Team)**
171
172    .. code-block:: bash
173
174        git submodule foreach 'git commit -asm "Bump versions by x.(y+1).z for next dev cycle"'
175        git submodule foreach 'git review -t ${CURR_RELEASE,,}-branch-cut'