Merge "Add version bump job"
authorAnil Belur <abelur@linuxfoundation.org>
Thu, 25 May 2017 11:19:49 +0000 (11:19 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 25 May 2017 11:19:49 +0000 (11:19 +0000)
jjb/autorelease/autorelease-projects.yaml
jjb/autorelease/autorelease-templates.yaml
jjb/autorelease/version-bump.sh [new file with mode: 0644]

index 6e5fa31f47dea54dc76d7a29b29a33173813d7e2..c622cd4f4e3e488237b803705bd7fb7610128307 100644 (file)
@@ -3,6 +3,7 @@
     name: autorelease-projects
     jobs:
       - 'autorelease-release-{stream}'
+      - autorelease-version-bump-{stream}
 
     stream:
       - nitrogen:
index 284fdef09c0635d96479e9cabca753b4b42bd26c..4894c2257cf7685d61cd93580ae1705e5f167e24 100644 (file)
       - opendaylight-infra-shiplogs:
           maven-version: 'mvn33'
 
+- job-template:
+    name: autorelease-version-bump-{stream}
+    project-type: freestyle
+    node: centos7-autorelease-4c-16g
+
+    properties:
+      - opendaylight-infra-properties:
+          build-days-to-keep: 7
+
+    parameters:
+      - lf-infra-parameters:
+          project: releng/autorelease
+          branch: '{branch}'
+          refspec: 'refs/heads/{branch}'
+      - string:
+          name: RELEASE_TAG
+          default: '{next-release-tag}'
+          description: |
+              Release that is being version bumped.
+              Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
+      - bool:
+          name: DRY_RUN
+          default: true
+          description: |
+              If DRY_RUN is enabled modifications are not published to Gerrit.
+      - maven-exec:
+          maven-version: mvn33
+
+    scm:
+      - lf-infra-gerrit-scm:
+          branch: '{branch}'
+          refspec: 'refs/heads/{branch}'
+          jenkins-ssh-credential: opendaylight-jenkins-ssh
+          submodule-recursive: true
+          choosing-strategy: default
+
+    wrappers:
+      - lf-infra-wrappers:
+          build-timeout: 240
+          jenkins-ssh-credential: opendaylight-jenkins-ssh
+
+    builders:
+      # force jenkins install of maven version before any shell scripts use it
+      - maven-target:
+          maven-version: mvn33
+          goals: '-version'
+          settings: autorelease-settings
+          settings-type: cfp
+          global-settings: odl-global-settings
+          global-settings-type: cfp
+      - autorelease-cfp
+      - shell: !include-raw-escape:
+          - ../global-jjb/shell/lftools-install.sh
+          - version-bump.sh
+
+    publishers:
+      - lf-infra-publish
 
 - job-template:
     name: 'autorelease-generate-release-notes-{stream}'
diff --git a/jjb/autorelease/version-bump.sh b/jjb/autorelease/version-bump.sh
new file mode 100644 (file)
index 0000000..4b4aea4
--- /dev/null
@@ -0,0 +1,77 @@
+#!/bin/bash
+# @License EPL-1.0 <http://spdx.org/licenses/EPL-1.0>
+##############################################################################
+# Copyright (c) 2017 The Linux Foundation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+##############################################################################
+
+# This script performs version bumping activities for an ODL release.
+echo "---> version-bump.sh"
+
+mkdir -p "$WORKSPACE/archives"
+LOG_FILE="$WORKSPACE/archives/version-bump.log"
+BRANCH="$GERRIT_BRANCH"
+
+# Ensure we fail the job if any steps fail.
+set -eu -o pipefail
+
+git checkout -b "${BRANCH,,}" "origin/${BRANCH,,}"
+git submodule foreach git checkout -b "${BRANCH,,}" "origin/${BRANCH,,}"
+
+# Check if git state is clean
+git status
+
+lftools version release "$RELEASE_TAG"
+lftools version bump "$RELEASE_TAG"
+
+git submodule foreach "git commit -asm 'Bump versions by x.y.(z+1)'"
+# Only submodules need to be bumped, we can ignore autorelease's bump information
+git checkout -f
+
+# Generate git patches
+patch_dir="$WORKSPACE/archives/patches/version-bump"
+mkdir -p "$patch_dir"
+for module in $(git submodule | awk '{ print $2 }')
+do
+    pushd "$module"
+    git format-patch --stdout "origin/${BRANCH,,}" > "$patch_dir/${module//\//-}.patch"
+    git bundle create "$patch_dir/${module//\//-}.bundle" "origin/${BRANCH,,}..HEAD"
+    popd
+done
+
+# Verify
+{
+    echo "----> Verify version bump"
+    git submodule foreach git show HEAD
+    git show HEAD
+    find . -name pom.xml -print0 | xargs -0 grep "$RELEASE_TAG" || true
+    git status
+    ls "$patch_dir"
+} | tee -a "$LOG_FILE"
+
+# Push
+if [ "$DRY_RUN" = "false" ]
+then
+    # Run a build here! Should be safe to run mvn clean deploy as nothing should be
+    # using the version bumped versions just yet.
+    ./scripts/fix-relativepaths.sh
+    "$MVN" clean install -Pq \
+    -s "$SETTINGS_FILE" \
+    -gs "$GLOBAL_SETTINGS_FILE" \
+    --show-version \
+    --batch-mode \
+    -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
+    -Djenkins \
+    -Dmaven.repo.local=/tmp/r \
+    -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
+
+    # Push up patches last, as long as nothing failed.
+    git submodule foreach "git remote add gerrit '$GIT_URL/$PROJECT'"
+    git submodule foreach "git review --yes -t '${RELEASE_TAG}' || true"
+fi
+
+echo "Version bumping complete."