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.

cd scripts/
./odlsign-bulk STAGING_REPO_ID  # eg. autorelease-1367

Releasing OpenDaylight

  • Block submit permissions for registered users and elevate RE’s committer rights on gerrit.

    ../_images/gerrit-update-committer-rights.png

    Note

    Enable Exclusive checkbox

  • Export ${RELEASE} and ${BUILDNUM} with current release name and build number.

    export RELEASE=Beryllium-SR4
    export BRANCH=${RELEASE//-*}
    export BUILDNUM=55
    
  • Nexus: click release for staging repo (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)

    git clone --recursive https://git.opendaylight.org/gerrit/releng/autorelease
    
  • Checkout autorelease and switch to release branch eg stable/carbon (Release Engineering Team)

    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)

    git review -s
    git submodule foreach 'git review -s'
    
  • Download patches (*.bundle files and taglist.log.gz) from log server.

    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.

    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

    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)

    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)