Update Merge-$STREAM views via AR jobs
[releng/builder.git] / jjb / autorelease / autorelease-macros.yaml
index 3f1301a112aedf9ae97e06972d22c99472cc321e..e6bf110b6c3e1a3a3fc09929e84bfb4f878135af 100644 (file)
+---
 # Macros for the AutoRelease project
 - parameter:
     name: autorelease-release-tag
     parameters:
-        - string:
-            name: RELEASE_TAG
-            default: '{release-tag}'
-            description: "The Release train tag to use eg. Beryllium-SR1"
-
-- parameter:
-    name: autorelease-release-branch
-    parameters:
-        - string:
-            name: RELEASE_BRANCH
-            default: '{release-branch}'
-            description: "The Release train branch to base build off eg. stable/beryllium"
+      - string:
+          name: RELEASE_TAG
+          default: '{release-tag}'
+          description: "The Release train tag to use eg. Beryllium-SR1"
 
 - wrapper:
     name: autorelease-build-timeout
     wrappers:
-        - timeout:
-            type: absolute
-            timeout: 1440
-            fail: true
+      - timeout:
+          type: absolute
+          timeout: 1440
+          fail: true
 
 - builder:
     name: autorelease-checkout-gerrit-patch
     builders:
-        - shell: |
-            cd ${GERRIT_PROJECT}
-            echo "Checking out ${GERRIT_PROJECT} patch ${GERRIT_REFSPEC}..."
-            git fetch origin ${GERRIT_REFSPEC} && git checkout FETCH_HEAD
-            cd ..
+      - shell: |
+          #!/bin/bash
+          set -eu -o pipefail
+
+          # If the project is autorelease then we do not need to cd
+          if [ "$GERRIT_PROJECT" != "releng/autorelease" ]; then
+              cd "$WORKSPACE/$GERRIT_PROJECT"
+          fi
+
+          echo "Checking out ${GERRIT_PROJECT} patch ${GERRIT_REFSPEC}..."
+          git fetch origin ${GERRIT_REFSPEC} && git checkout FETCH_HEAD
+
+          # If the project is autorelease then we need to init and update submodules
+          if [ "$GERRIT_PROJECT" == "releng/autorelease" ]; then
+              git submodule update --init
+              # The previous checkout might have failed to remove directory of a submodule being removed.
+              # See https://stackoverflow.com/a/10761699
+              git clean -dff
+          fi
 
 - builder:
     name: autorelease-cfp
     builders:
-        - config-file-provider:
-            files:
-                - file-id: 'autorelease-settings'
-                  variable: 'SETTINGS_FILE'
-                - file-id: 'odl-global-settings'
-                  variable: 'GLOBAL_SETTINGS_FILE'
+      - config-file-provider:
+          files:
+            - file-id: 'autorelease-settings'
+              variable: 'SETTINGS_FILE'
+            - file-id: 'global-settings'
+              variable: 'GLOBAL_SETTINGS_FILE'
 
 - builder:
     name: autorelease-determine-merge-order
     builders:
-       - shell: |
-          # TODO: Remove this condition once stable/beryllium is no longer
-          #       officially maintained.
-          if [ "$GERRIT_BRANCH" != "stable/beryllium" ]; then
-              virtualenv --system-site-packages $WORKSPACE/venv
-              source $WORKSPACE/venv/bin/activate
-              pip install --upgrade pip
-              pip install --upgrade networkx
-              pip freeze
-              ./scripts/determine-merge-order.py
-              deactivate
-              rm -rf $WORKSPACE/venv
-          fi
+      - shell: |
+          virtualenv --system-site-packages $WORKSPACE/venv
+          source $WORKSPACE/venv/bin/activate
+          PYTHON="$WORKSPACE/venv/bin/python"
+          $PYTHON -m pip install --upgrade "pip<10.0.0" setuptools
+          $PYTHON -m pip install --upgrade networkx
+          $PYTHON -m pip freeze
+          ./scripts/determine-merge-order.py
+          deactivate
+          rm -rf $WORKSPACE/venv
 
 - builder:
     name: autorelease-maven-deploy
     builders:
-        - shell:
-            !include-raw:
-                - include-raw-autorelease-maven-deploy.sh
+      - shell: !include-raw: autorelease-maven-deploy.sh
 
 - builder:
     name: autorelease-maven-sources
     builders:
-        - maven-target:
-            maven-version: '{maven-version}'
-            pom: 'pom.xml'
-            goals: '--quiet dependency:sources -DoutputFile=$WORKSPACE/sources.log -DappendOutput -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r'
-            java-opts:
-                - '-Xmx4096m -XX:MaxPermSize=1024m'
-            settings: '{settings}'
-            settings-type: cfp
-            global-settings: '{global-settings}'
-            global-settings-type: cfp
+      - maven-target:
+          maven-version: '{maven-version}'
+          pom: 'pom.xml'
+          goals: |
+              dependency:sources
+              --quiet
+              -DoutputFile=$WORKSPACE/sources.log
+              -DappendOutput
+              {opendaylight-infra-mvn-opts}
+          java-opts:
+            - '-Xmx4096m -XX:MaxPermSize=1024m'
+          settings: '{settings}'
+          settings-type: cfp
+          global-settings: '{global-settings}'
+          global-settings-type: cfp
 
 - builder:
     name: autorelease-maven-sources-post-process
     builders:
-        - shell: |
-            awk '/The following files have NOT been resolved:/,/^$/' sources.log > missing-sources.log
+      - shell: |
+          awk '/The following files have NOT been resolved:/,/^$/' sources.log > missing-sources.log
 
 - builder:
-    name: autorelease-generate-taglist
+    name: autorelease-distribute-taglist
     builders:
-        - shell: |
-            echo autorelease `git rev-parse --verify HEAD` ${RELEASE_TAG} | tee -a $WORKSPACE/taglist.log
-            git submodule foreach 'echo $path `git rev-parse --verify HEAD` ${RELEASE_TAG} | tee -a $WORKSPACE/taglist.log'
+      - integration-set-variables
+      - shell: |
+          #!/bin/bash
+          set +e  # DO NOT fail build if copying fails.
+
+          cp -vf "$WORKSPACE/archives/patches/taglist.log" \
+              "integration/distribution/$KARAF_ARTIFACT/src/main/assembly/"
+
+          # DO NOT fail the build if copying failed.
+          exit 0
 
 - builder:
-    name: autorelease-distribute-taglist
+    name: autorelease-generate-artifact-versions
+    # Generate versions.csv containing version of all mvn artifacts in this build.
     builders:
-        - shell: |
-            if [ -d "integration/distribution/distributions" ]; then
-                cp -vf "$WORKSPACE/taglist.log" "integration/distribution/distributions/karaf/src/main/assembly/"
-            else
-                cp -vf "$WORKSPACE/taglist.log" "integration/distribution/distribution-karaf/src/main/assembly/"
-            fi
+      - shell: |
+          #!/bin/bash
+          set -eu -o pipefail
+          ./scripts/generate-artifact-versions.sh
+          mkdir -p "$WORKSPACE/archives"
+          mv versions.csv "$WORKSPACE/archives"
 
 - builder:
     name: autorelease-generate-release-patches
     builders:
-    - shell:
-        !include-raw:
-            - include-raw-autorelease-release-versions.sh
+      - shell: !include-raw:
+          - ../global-jjb/shell/lftools-install.sh
+          - prepare-release.sh
 
 - builder:
-    name: autorelease-sys-stats
+    name: autorelease-get-integration-test-variables
     builders:
-        - shell: |
-            uname -a
-            df -h
+      - integration-set-variables
+      - shell: !include-raw: autorelease-get-integration-test-variables.sh
+      - inject:
+          properties-file: variables.prop
 
 - builder:
-    name: autorelease-get-integration-test-variables
+    name: autorelease-fix-relative-paths
     builders:
-    - shell:
-        !include-raw:
-            - include-raw-autorelease-get-integration-test-variables.sh
-    - inject:
-        properties-file: variables.prop
+      - shell: |
+          ./scripts/fix-relativepaths.sh
 
 - builder:
-    name: autorelease-generate-project-report
+    name: autorelease-generate-release-notes
     builders:
-    - shell:
-        !include-raw:
-            - include-raw-generate-project-report.sh
+      - shell: !include-raw:
+          - generate-release-notes.sh
 
 - builder:
-    name: autorelease-fix-relative-paths
+    name: autorelease-update-project-views
     builders:
-        - shell: |
-            ./scripts/fix-relativepaths.sh
+      - shell: !include-raw: update-autorelease-projects-views.sh
 
 - builder:
-    # include-raw-autorelease-notify-build-failure.sh searches console log for
-    # failures and emails the status to the release mailing list.
-    name: opendaylight-infra-notify-status
+    name: autorelease-update-validate-projects
     builders:
-        - shell:
-            !include-raw: include-raw-autorelease-notify-build-failure.sh
+      - shell: !include-raw: update-validate-autorelease-projects.sh
+
+- builder:
+    name: autorelease-compare-projects
+    builders:
+      - shell: !include-raw: compare-autorelease-projects.sh
+
+- publisher:
+    # Search console log for failures and email status to the release mailing list.
+    name: opendaylight-infra-notify-status
+    publishers:
+      - postbuildscript:
+          builders:
+            - role: BOTH
+              build-on:
+                - ABORTED
+                - FAILURE
+                - NOT_BUILT
+                - SUCCESS
+                - UNSTABLE
+              build-steps:
+                - shell: !include-raw: notify-build-failure.sh
+          mark-unstable-if-failed: true