******************** Simultaneous Release ******************** This page explains how the OpenDaylight release process works once the TSC has approved a release. Preparations ============ After release candidate is built gpg sign artifacts using odlsign-bulk script in **releng/builder/scripts**. .. code-block:: bash cd scripts/ ./odlsign-bulk STAGING_REPO_ID # eg. autorelease-1367 Verify the distribution-karaf file with the signature. .. code-block:: bash gpg2 --verify distribution-karaf-x.y.z-${RELEASE}.tar.gz.asc distribution-karaf-x.y.z-${RELEASE}.tar.gz Releasing OpenDaylight ====================== - 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. - Export ${RELEASE} and ${BUILDNUM} with current release name and build number. .. code-block:: bash export RELEASE=Beryllium-SR4 export BRANCH=${RELEASE//-*} export BUILDNUM=55 - 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)** .. code-block:: bash git clone --recursive https://git.opendaylight.org/gerrit/releng/autorelease - Checkout autorelease and switch to release branch eg stable/carbon **(Release Engineering Team)** .. code-block:: bash 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 your git repo is setup to push (use git-review) .. code-block:: bash git review -s git submodule foreach 'git review -s' - Download patches (\*.bundle files and taglist.log.gz) from log server. .. 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 - Run the following commands for every project in the release, to apply patches to each project directory. .. code-block:: bash pip install lftools lftools version patch ${RELEASE} git review -y -t ${RELEASE} git push gerrit release/${RELEASE,,} - Merge all patches on gerrit in the order generated by merge-order.log - Tag autorelease too .. code-block:: bash 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,,} - Re-enable submit permissions for registered users and disable elevated RE committer rights on gerrit. - 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. Alternatively, release notes can also be manually generated with the script. **(Release Engineering Team)** .. 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/. - Send email to release/tsc/dev notifying tagging and version bump complete **(Release Engineering Team)**