Merge "M4 status Groupbasedpolicy"
[docs.git] / docs / release-process / simultaneous-release.rst
index ab5906cdae7cd795320bfbf357e7b12ba1b7cfff..d869ebeaf08978fac97c2691bf4af544ba16a562 100644 (file)
@@ -8,13 +8,15 @@ approved a release.
 Preparations
 ============
 
-After release candidate is built gpg sign artifacts using odlsign-bulk script in
-**releng/builder/scripts**.
+After release candidate is built gpg sign artifacts using the
+`lftools sign <https://lf-releng-tools.readthedocs.io/en/latest/commands/sign.html>`_
+command.
 
 .. code-block:: bash
 
-    cd scripts/
-    ./odlsign-bulk STAGING_REPO_ID  # eg. autorelease-1367
+    STAGING_REPO=autorelease-1903
+    STAGING_PROFILE_ID=abc123def456  # This Profile ID is listed in Nexus > Staging Profiles
+    lftools sign deploy-nexus https://nexus.opendaylight.org $STAGING_REPO $STAGING_PROFILE_ID
 
 Verify the distribution-karaf file with the signature.
 
@@ -26,92 +28,104 @@ Verify the distribution-karaf file with the signature.
 Releasing OpenDaylight
 ======================
 
-- Block submit permissions for registered users and elevate RE's committer rights on gerrit. **(Helpdesk)**
+- Block submit permissions for registered users and elevate RE's committer
+  rights on Gerrit.
+  **(Helpdesk)**
 
   .. figure:: images/gerrit-update-committer-rights.png
 
   .. note::
 
-     Enable **Exclusive** checkbox for the submit button to override any existing persmissions.
+     Enable **Exclusive** checkbox for the submit button to override any
+     existing persmissions. Code-Review and Verify permissions are only needed
+     during version bumping. DO NOT enable it during code freeze.
 
-- Export ${RELEASE} and ${BUILDNUM} with current release name and build number.
+- Nexus: click release for staging repo
+  **(Helpdesk)**
 
-  .. code-block:: bash
+- Nexus: click release for gpgsign repo (created above in Preparations)
+  **(Helpdesk)**
 
-     export RELEASE=Beryllium-SR4
-     export BRANCH=${RELEASE//-*}
-     export BUILDNUM=55
+- Pull latest autorelease repository
+  **(Release Engineering Team)**
 
-- Nexus: click release for staging repo **(Helpdesk)**
-- Nexus: click release for gpgsign repo (created above in Preparations) **(Helpdesk)**
-- Send email to Helpdesk with binary URL to update website **(Helpdesk)**
-- Send email to TSC and Release mailing lists announcing release binaries location **(Release Engineering Team)**
-- Clone autorelease repository. **(Release Engineering Team)**
+  .. note:: If you already cloned autorelease the clone line can be skipped below.
 
   .. code-block:: bash
 
-      git clone --recursive https://git.opendaylight.org/gerrit/releng/autorelease
+     export RELEASE=Nitrogen-SR1
+     export STREAM=${RELEASE//-*}
+     export BRANCH=origin/stable/${STREAM,,}
 
-- Checkout autorelease and switch to release branch eg stable/carbon **(Release Engineering Team)**
+     git clone --recursive https://git.opendaylight.org/gerrit/releng/autorelease
+     cd autorelease
+     git fetch origin
 
-  .. code-block:: bash
+     # Ensure we are on the right branch. Note that we are wiping out all
+     # modifications in the repo so backup unsaved changes before doing this.
+     git checkout -f
+     git checkout ${BRANCH,,}
+     git clean -xdff
+     git submodule update --init
+
+     # Ensure git review is setup
+     git review -s
+     git submodule foreach 'git review -s'
 
-      git checkout -b stable/${BRANCH,,} origin/stable/${BRANCH,,}
-      git submodule update --init
-      git submodule foreach git checkout -b stable/${BRANCH,,} origin/stable/${BRANCH,,}
+- Make sure the latest lftools is installed
+  **(Release Engineering Team)**
 
-- Make sure your git repo is setup to push (use git-review)
+  .. note:: If you already created an lftools virtualenv you can skip the mkvirtualenv step below.
 
   .. code-block:: bash
 
-      git review -s
-      git submodule foreach 'git review -s'
+      mkvirtualenv lftools
+      workon lftools
+      pip install --upgrade lftools
 
-- Download patches (\*.bundle files and taglist.log.gz) from log server.
+- Publish release tags
+  **(Release Engineering Team)**
 
   .. code-block:: bash
 
-      mkdir /tmp/patches && cd /tmp/patches
-      wget https://logs.opendaylight.org/releng/jenkins092/autorelease-release-${BRANCH,,}/${BUILDNUM}/archives/all-bundles.tar.gz
-      gunzip all-bundles.tar.gz
-      wget https://logs.opendaylight.org/releng/jenkins092/autorelease-release-${BRANCH,,}/${BUILDNUM}/archives/patches/taglist.log.gz
-      gunzip taglist.log.gz
+      export BUILD_NUM=55
+      export PATCH_URL="https://logs.opendaylight.org/releng/jenkins092/autorelease-release-${STREAM,,}/${BUILD_NUM}/patches.tar.gz"
+      ./scripts/release-tags.sh "${RELEASE}" /tmp/patches "$PATCH_URL"
 
-- Run the following commands for every project in the release, to apply patches to each project directory.
+- Run autorelease-version-bump-${STREAM} job
+  **(Release Engineering Team)**
 
-  .. code-block:: bash
+- Send email to Helpdesk with binary URL to update website
+  **(Helpdesk)**
 
-      pip install lftools
-      lftools version patch ${RELEASE}
-      git review -y -t ${RELEASE}
-      git push gerrit release/${RELEASE,,}
+- Send email to TSC and Release mailing lists announcing release binaries location
+  **(Release Engineering Team)**
 
-- Merge all patches on gerrit in the order generated by merge-order.log
+- Merge all patches generated by the job
+  **(Release Engineering Team)**
 
-- Tag autorelease too
+- Re-enable submit permissions for registered users and disable elevated RE
+  committer rights on gerrit
+  **(Helpdesk)**
 
-  .. code-block:: bash
+- Send email to release/tsc/dev notifying tagging and version bump complete
+  **(Release Engineering Team)**
 
-      git checkout `cat /tmp/patches/taglist.log | grep autorelease | awk '{print $2}'`
-      git submodule foreach git checkout release/${RELEASE,,}
-      git commit -asSm "Release ${RELEASE}"
-      git tag -asm "OpenDaylight ${RELEASE} release" release/${RELEASE,,}
-      git push gerrit release/${RELEASE,,}
+- Run autorelease-generate-release-notes-${STREAM} job
+  **(Release Engineering Team)**
 
-- Re-enable submit permissions for registered users and disable elevated RE committer rights on gerrit.
+  Trigger this job by leaving a Gerrit comment `generate-release-notes Carbon-SR2`
 
-- Release notes is auto generated by job autorelease-generate-release-notes-${BRANCH,,}
-  triggered at the end of every autorelease build. The release notes file (release_notes.rst) is
-  available under archives.
+  .. important:: This job can only be used to generate service releases.
 
-  Alternatively, release notes can also be manually generated with the script.
-  **(Release Engineering Team)**
+  For major releases the notes come from the projects themselves in the docs
+  repo via the `docs/releaset-notes/projects` directory.
+
+  Release notes can also be manually generated with the script:
 
   .. code-block:: bash
 
       git checkout stable/${BRANCH,,}
-      cd scripts/release_notes_management/ && ./build.sh
-
-  The output file (release_notes.rst) generated by the build script is available under autorelease/scripts/release_notes_management/projects/.
+      ./scripts/release-notes-generator.sh ${RELEASE}
 
-- Send email to release/tsc/dev notifying tagging and version bump complete **(Release Engineering Team)**
+  A `release-notes.rst` will be generated in the working directory.