X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=docs%2Frelease-process%2Fsimultaneous-release.rst;h=7bd4dc7039d7de25fcff46f1cd16fad8d9dafe17;hb=a998bf62050f484fe2baecf7a3162609d2715d2a;hp=03c9fe6766072f2be6ec115731021a2f24f6c847;hpb=dbb03eae9e81c1fadf064f6cbfdbeb2e87dea956;p=docs.git diff --git a/docs/release-process/simultaneous-release.rst b/docs/release-process/simultaneous-release.rst index 03c9fe676..7bd4dc703 100644 --- a/docs/release-process/simultaneous-release.rst +++ b/docs/release-process/simultaneous-release.rst @@ -5,94 +5,207 @@ 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 Freeze +=========== + +At the first Release Candidate (RC) the ``Submit`` button is disabled on the +stable branch to prevent projects from merging non-blocking patches +into the release. + +#. Disable ``Submit`` for *Registered Users* and allow permission to the + *Release Engineering Team* + **(Helpdesk)** + + .. figure:: images/gerrit-update-committer-rights.png + + .. important:: + + **DO NOT** enable Code-Review+2 and Verified+1 to the + Release Engienering Team during code freeze. + + .. note:: + + Enable **Exclusive** checkbox for the submit button to override any + existing persmissions. Code-Review and Verify permissions are only needed + during version bumping. + + +.. _simrel-preparations: + +Release Preparations +==================== + +After release candidate is built gpg sign artifacts using the +:doc:`lftools sign ` command. + +.. code-block:: bash + + 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. .. code-block:: bash - cd scripts/ - ./odlsign-bulk STAGING_REPO_ID # eg. autorelease-1367 + gpg2 --verify karaf-x.y.z-${RELEASE}.tar.gz.asc karaf-x.y.z-${RELEASE}.tar.gz + +.. note:: + + Projects such as OpFlex participate in the Simultaneous Release but are not + part of the autorelease build. Ping those projects and prep their staging + repos as well. + Releasing OpenDaylight ====================== -- Block submit permissions for registered users and elevate RE's committer rights on gerrit. +The following describes the Simultaneous Release process for shipping out the +binary and source code on release day. - .. figure:: images/gerrit-update-committer-rights.png +Bulleted actions can be performed in parallel while numbered actions should be +done in sequence. - .. note:: +- Release the Nexus Staging repos + **(Helpdesk)** - Enable Exclusive checkbox + #. Select both the artifacts and signature repos + (:ref:`created previously `) and ``click Release``. -- Export ${RELEASE} and ${BUILDNUM} with current release name and build number. + #. Enter ``Release OpenDaylight $RELEASE`` for the description and + ``click confirm``. - .. code-block:: bash + *Perform this step for any additional projects that are participating in + the Simultaneous Release but are not part of the autorelease build.* - export RELEASE=Beryllium-SR4 - export BRANCH=${RELEASE//-*} - export BUILDNUM=55 + .. tip:: -- 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)** + This task takes hours to run so kicking it off early is a good idea. - .. code-block:: bash +- Version bump for next dev cycle + **(Release Engineering Team)** - git clone --recursive https://git.opendaylight.org/gerrit/releng/autorelease + #. Run the autorelease-version-bump-${STREAM} job -- Checkout autorelease and switch to release branch eg stable/carbon **(Release Engineering Team)** + .. tip:: - .. code-block:: bash + This task takes hours to run so kicking it off early is a good idea. - git checkout -b stable/${BRANCH,,} origin/stable/${BRANCH,,} - git submodule update --init - git submodule foreach git checkout -b stable/${BRANCH,,} origin/stable/${BRANCH,,} + #. Enable ``Code-Review+2`` and ``Verify+1`` voting permissions + for the ``Release Engineering Team`` + **(Helpdesk)** -- Make sure your git repo is setup to push (use git-review) + .. figure:: images/gerrit-update-committer-rights.png - .. code-block:: bash + .. note:: - git review -s - git submodule foreach 'git review -s' + 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. -- Download patches (\*.bundle files and taglist.log.gz) from log server. + #. Merge all patches generated by the job - .. code-block:: bash + #. Restore Gerrit permissions for *Registered Users* and disable elevated + *Release Engineering Team* permissions + **(Helpdesk)** - 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 +- Tag the release + **(Release Engineering Team)** -- Run the following commands for every project in the release, to apply patches to each project directory. + #. Install lftools - .. code-block:: bash + lftools contains the version bumping scripts we need to version bump + and tag the dev branches. We recommend using a virtualenv for this. - pip install lftools - lftools version patch ${RELEASE} - git review -y -t ${RELEASE} - git push gerrit release/${RELEASE,,} + .. code-block:: bash -- Merge all patches on gerrit in the order generated by merge-order.log + # Skip mkvirtualenv if you already have an lftools virtualenv + mkvirtualenv lftools + workon lftools + pip install --upgrade lftools -- Tag autorelease too + #. Pull latest autorelease repository - .. code-block:: bash + .. code-block:: bash + + export RELEASE=Nitrogen-SR1 + export STREAM=${RELEASE//-*} + export BRANCH=origin/stable/${STREAM,,} + + # No need to clean if you have already done it. + git clone --recursive https://git.opendaylight.org/gerrit/releng/autorelease + cd autorelease + git fetch origin + + # 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 foreach git checkout -f + git submodule foreach git clean -xdff + git submodule update --init + + # Ensure git review is setup + git review -s + git submodule foreach 'git review -s' + + #. Publish release tags + + .. code-block:: bash + + export BUILD_NUM=55 + export PATCH_URL="https://logs.opendaylight.org/releng/vex-yul-odl-jenkins-1/autorelease-release-${STREAM,,}/${BUILD_NUM}/patches.tar.gz" + ./scripts/release-tags.sh "${RELEASE}" /tmp/patches "$PATCH_URL" + +- Notify Community and Website teams + + #. Update downloads page + + Submit a patch to the ODL docs project to update the + `downloads `_ + page with the latest binaries and packages **(Release Engineering Team)** + + #. Email dev/release/tsc mailing lists announcing release binaries location + **(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,,} + #. Email dev/release/tsc mailing lists to notify of tagging and version bump + completion + **(Release Engineering Team)** -- Re-enable submit permissions for registered users and disable elevated RE committer rights on gerrit. + .. note:: + + This step is performed after Version Bump and Tagging steps are + complete. + +- Generate Service Release notes + + .. warning:: + + If this is a major release (eg. |release|) as opposed to a Service Release + (eg. |release|-SR1). Skip this step. + + For major releases the notes come from the projects themselves in the docs + repo via the `docs/releaset-notes/projects` directory. + + For service releases (SRs) we need to generate service release notes. This + can be performed by running the autorelease-generate-release-notes-$STREAM + job. + + #. Run the autorelease-generate-release-notes-${STREAM} job + **(Release Engineering Team)** + + Trigger this job by leaving a Gerrit comment + ``generate-release-notes Carbon-SR2`` + + Release notes can also be manually generated with the script: + + .. code-block:: bash -- Generate release notes (???) + git checkout stable/${BRANCH,,} + ./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. Submit + this file as ``release-notes-sr1.rst`` (update the sr as necessary) to the + docs project.