Update git submodules
[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 the
12 `lftools sign <https://lf-releng-tools.readthedocs.io/en/latest/commands/sign.html>`_
13 command.
14
15 .. code-block:: bash
16
17     STAGING_REPO=autorelease-1903
18     STAGING_PROFILE_ID=abc123def456  # This Profile ID is listed in Nexus > Staging Profiles
19     lftools sign deploy-nexus https://nexus.opendaylight.org $STAGING_REPO $STAGING_PROFILE_ID
20
21 Verify the distribution-karaf file with the signature.
22
23 .. code-block:: bash
24
25     gpg2 --verify distribution-karaf-x.y.z-${RELEASE}.tar.gz.asc distribution-karaf-x.y.z-${RELEASE}.tar.gz
26
27
28 Releasing OpenDaylight
29 ======================
30
31 - Block submit permissions for registered users and elevate RE's committer
32   rights on Gerrit.
33   **(Helpdesk)**
34
35   .. figure:: images/gerrit-update-committer-rights.png
36
37   .. note::
38
39      Enable **Exclusive** checkbox for the submit button to override any
40      existing persmissions. Code-Review and Verify permissions are only needed
41      during version bumping. DO NOT enable it during code freeze.
42
43 - Nexus: click release for staging repo
44   **(Helpdesk)**
45
46 - Nexus: click release for gpgsign repo (created above in Preparations)
47   **(Helpdesk)**
48
49 - Pull latest autorelease repository
50   **(Release Engineering Team)**
51
52   .. note:: If you already cloned autorelease the clone line can be skipped below.
53
54   .. code-block:: bash
55
56      export RELEASE=Nitrogen-SR1
57      export STREAM=${RELEASE//-*}
58      export BRANCH=origin/stable/${STREAM,,}
59
60      git clone --recursive https://git.opendaylight.org/gerrit/releng/autorelease
61      cd autorelease
62      git fetch origin
63
64      # Ensure we are on the right branch. Note that we are wiping out all
65      # modifications in the repo so backup unsaved changes before doing this.
66      git checkout -f
67      git checkout ${BRANCH,,}
68      git clean -xdff
69      git submodule update --init
70
71      # Ensure git review is setup
72      git review -s
73      git submodule foreach 'git review -s'
74
75 - Make sure the latest lftools is installed
76   **(Release Engineering Team)**
77
78   .. note:: If you already created an lftools virtualenv you can skip the mkvirtualenv step below.
79
80   .. code-block:: bash
81
82       mkvirtualenv lftools
83       workon lftools
84       pip install --upgrade lftools
85
86 - Publish release tags
87   **(Release Engineering Team)**
88
89   .. code-block:: bash
90
91       export BUILD_NUM=55
92       export PATCH_URL="https://logs.opendaylight.org/releng/jenkins092/autorelease-release-${STREAM,,}/${BUILD_NUM}/patches.tar.gz"
93       ./scripts/release-tags.sh "${RELEASE}" /tmp/patches "$PATCH_URL"
94
95 - Run autorelease-version-bump-${STREAM} job
96   **(Release Engineering Team)**
97
98 - Send email to Helpdesk with binary URL to update website
99   **(Helpdesk)**
100
101 - Send email to TSC and Release mailing lists announcing release binaries location
102   **(Release Engineering Team)**
103
104 - Merge all patches generated by the job
105   **(Release Engineering Team)**
106
107 - Re-enable submit permissions for registered users and disable elevated RE
108   committer rights on gerrit
109   **(Helpdesk)**
110
111 - Send email to release/tsc/dev notifying tagging and version bump complete
112   **(Release Engineering Team)**
113
114 - Run autorelease-generate-release-notes-${STREAM} job
115   **(Release Engineering Team)**
116
117   Trigger this job by leaving a Gerrit comment `generate-release-notes Carbon-SR2`
118
119   .. important:: This job can only be used to generate service releases.
120
121   For major releases the notes come from the projects themselves in the docs
122   repo via the `docs/releaset-notes/projects` directory.
123
124   Release notes can also be manually generated with the script:
125
126   .. code-block:: bash
127
128       git checkout stable/${BRANCH,,}
129       ./scripts/release-notes-generator.sh ${RELEASE}
130
131   A `release-notes.rst` will be generated in the working directory.