Improve to simultaneous release doc
[docs.git] / docs / release-process / simultaneous-release.rst
1 ********************
2 Simultaneous Release
3 ********************
4
5 This page explains how the OpenDaylight release process works once the TSC has
6 approved a release.
7
8 Preparations
9 ============
10
11 After release candidate is built gpg sign artifacts using odlsign-bulk script in
12 **releng/builder/scripts**.
13
14     .. code-block:: bash
15
16         cd scripts/
17         ./odlsign-bulk STAGING_REPO_ID  # eg. autorelease-1367
18
19 Releasing OpenDaylight
20 ======================
21
22 - Block submit permissions for registered users and elevate RE's committer rights on gerrit.
23
24     .. figure:: images/gerrit-update-committer-rights.png
25
26     .. note::
27
28        Enable Exclusive checkbox
29
30 - Export ${RELEASE} and ${BUILDNUM} with current release name and build number.
31
32     .. code-block:: bash
33
34        export RELEASE=Beryllium-SR4
35        export BRANCH=${RELEASE//-*}
36        export BUILDNUM=55
37
38 - Nexus: click release for staging repo **(Helpdesk)**
39 - Nexus: click release for gpgsign repo (created above in Preparations) **(Helpdesk)**
40 - Send email to Helpdesk with binary URL to update website **(Helpdesk)**
41 - Send email to TSC and Release mailing lists announcing release binaries location **(Release Engineering Team)**
42 - Clone autorelease repository. **(Release Engineering Team)**
43
44     .. code-block:: bash
45
46         git clone --recursive https://git.opendaylight.org/gerrit/releng/autorelease
47
48 - Checkout autorelease and switch to release branch eg stable/carbon **(Release Engineering Team)**
49
50     .. code-block:: bash
51
52         git checkout -b stable/${BRANCH,,} origin/stable/${BRANCH,,}
53         git submodule update --init
54         git submodule foreach git checkout -b stable/${BRANCH,,} origin/stable/${BRANCH,,}
55
56 - Make sure your git repo is setup to push (use git-review)
57
58     .. code-block:: bash
59
60         git review -s
61         git submodule foreach 'git review -s'
62
63 - Download patches (\*.bundle files and taglist.log.gz) from log server.
64
65     .. code-block:: bash
66
67         mkdir /tmp/patches && cd /tmp/patches
68         wget https://logs.opendaylight.org/releng/jenkins092/autorelease-release-${BRANCH,,}/${BUILDNUM}/archives/all-bundles.tar.gz
69         gunzip all-bundles.tar.gz
70         wget https://logs.opendaylight.org/releng/jenkins092/autorelease-release-${BRANCH,,}/${BUILDNUM}/archives/patches/taglist.log.gz
71         gunzip taglist.log.gz
72
73 - Run the following commands for every project in the release, to apply patches to each project directory.
74
75     .. code-block:: bash
76
77         pip install lftools
78         lftools version patch ${RELEASE}
79         git review -y -t ${RELEASE}
80         git push gerrit release/${RELEASE,,}
81
82 - Merge all patches on gerrit in the order generated by merge-order.log
83
84 - Tag autorelease too
85
86     .. code-block:: bash
87
88         git checkout `cat /tmp/patches/taglist.log | grep autorelease | awk '{print $2}'`
89         git submodule foreach git checkout release/${RELEASE,,}
90         git commit -asSm "Release ${RELEASE}"
91         git tag -asm "OpenDaylight ${RELEASE} release" release/${RELEASE,,}
92         git push gerrit release/${RELEASE,,}
93
94 - Re-enable submit permissions for registered users and disable elevated RE committer rights on gerrit.
95
96 - Generate release notes (???)
97
98 - Send email to release/tsc/dev notifying tagging and version bump complete **(Release Engineering Team)**