Rename archive-build macro to opendaylight-infra-shiplogs
[releng/builder.git] / jjb / releng-macros.yaml
index c2ae78f79ece66acdc4ec9e4cdc868540e1c3f70..bf596fa02cad709218d77e1faa0bce5dbecf85ff 100644 (file)
@@ -1,16 +1,16 @@
 # OLD Releng macros
 
 - parameter:
-    name: project-parameter
+    name: opendaylight-infra-parameters
     parameters:
         - string:
             name: PROJECT
             default: '{project}'
-            description: "JJB configured PROJECT parameter to identify an ODL Gerrit project"
-
-- parameter:
-    name: gerrit-parameters
-    parameters:
+            description: 'Parameter to identify an ODL Gerrit project'
+        - string:
+            name: ARCHIVE_ARTIFACTS
+            default: '{artifacts} **/target/surefire-reports/*-output.txt'
+            description: 'Space separated glob patterns for artifacts to archive into logs.opendaylight.org'
         - string:
             name: GERRIT_PROJECT
             default: '{project}'
@@ -76,7 +76,7 @@
     name: git-scm
     scm:
         - git:
-            credentials-id: '{credentials-id}'
+            credentials-id: 'opendaylight-jenkins-ssh'
             url: '$GIT_BASE'
             refspec: ''
             branches:
             skip-tag: true
             wipe-workspace: true
 
+- scm:
+    name: git-scm-with-submodules
+    scm:
+        - git:
+            credentials-id: 'opendaylight-jenkins-ssh'
+            url: '$GIT_BASE'
+            refspec: ''
+            branches:
+                - 'refs/heads/{branch}'
+            skip-tag: true
+            wipe-workspace: true
+            submodule:
+                recursive: true
+
 - scm:
     name: gerrit-trigger-scm
     scm:
         - git:
-            credentials-id: '{credentials-id}'
+            credentials-id: 'opendaylight-jenkins-ssh'
             url: '$GIT_BASE'
             refspec: '{refspec}'
             branches:
                   - branch-compare-type: 'ANT'
                     branch-pattern: '**/{branch}'
 
+- trigger:
+    name: gerrit-trigger-relevant-patch-submitted
+    triggers:
+        - gerrit:
+            server-name: 'OpenDaylight'
+            trigger-on:
+                - patchset-created-event:
+                    exclude-drafts: 'true'
+                    exclude-trivial-rebase: 'false'
+                    exclude-no-code-change: 'true'
+                - draft-published-event
+                - comment-added-contains-event:
+                    comment-contains-value: 'recheck'
+                - comment-added-contains-event:
+                    comment-contains-value: 'reverify'
+            projects:
+              - project-compare-type: 'ANT'
+                project-pattern: '{name}'
+                branches:
+                  - branch-compare-type: 'ANT'
+                    branch-pattern: '**/{branch}'
+
 - trigger:
     name: gerrit-trigger-patch-merged
     triggers:
             unstable: true
             fixed: true
             send-to:
-                - developers
                 - recipients
 
 - publisher:
                       healthy: 50
                       unhealthy: 40
 
+- publisher:
+    name: opendaylight-infra-shiplogs
+    # To archive things the job will need to create a "archives" directory in
+    # the workspace and this macro will handle copying the contents of the
+    # archives directory.
+    #
+    # Uses the build parameter ARCHIVE_ARTIFACTS if not empty to find files
+    # to archive. You can pass globstar patterns for example "**/*.xml **/*.log"
+    # as the archive pattern. This is a space separated list of files to archive.
+    #
+    # Also ensure that the workspace is cleaned up at the end of the build.
+    publishers:
+        - postbuildscript:
+            builders:
+                - shell: !include-raw: include-raw-deploy-archives.sh
+                - maven-target:
+                        maven-version: '{maven-version}'
+                        pom: '.archives/deploy-archives.xml'
+                        goals: 'clean deploy -V -B -q -Dmaven.repo.local=/tmp/r'
+                        settings: 'jenkins-log-archives-settings'
+                        settings-type: cfp
+                        global-settings: 'odl-global-settings'
+                        global-settings-type: cfp
+                - description-setter:
+                    regexp: '^Build logs: .*'
+                # Cleanup after ourselves
+                - wipe-org-opendaylight-repo
+            script-only-if-succeeded: False
+            script-only-if-failed: False
+            mark-unstable-if-failed: True
+        - workspace-cleanup:
+            fail-build: false
+
+- builder:
+    name: opendaylight-infra-pre-builders
+    builders:
+        - shell: |
+            if [ ! -z "$GERRIT_PATCHSET_REVISION" ]; then
+                LOG_MESSAGE="
+                    Logs for $JOB_NAME:
+                    https://logs.opendaylight.org/$SILO/$JENKINS_HOSTNAME/$JOB_NAME/$BUILD_NUMBER
+                    (note that logs will be unavailable until the job is completed running.)
+                "
+                ssh -p 29418 jenkins-$SILO@git.opendaylight.org gerrit review -m \"${LOG_MESSAGE}\" $GERRIT_PATCHSET_REVISION
+            fi
+
 - builder:
     name: wipe-org-opendaylight-repo
     builders:
         - shell: 'if [ -d /tmp/r/org/opendaylight ]; then rm -rf /tmp/r/org/opendaylight; fi'
 
+- builder:
+    name: wipe-local-maven-repo
+    builders:
+        - shell: 'if [ -d /tmp/r ]; then rm -rf /tmp/r; fi'
+
 - builder:
     name: jacoco-nojava-workaround
     builders:
         - file-id: '{settings-file}'
           variable: 'SETTINGS_FILE'
 
+- builder:
+    name: releng-fetch-p2zip-if-necessary
+    builders:
+    - shell: |
+        # Cleanup any existing zips and metadata before we download the new update site
+        rm -f *.zip *.xml
+    - conditional-step:
+        condition-kind: strings-match
+        condition-string1: '$P2ZIP_URL'
+        condition-string2: ''
+        condition-basedir: workspace
+        steps:
+            # TODO: Figure out latest snapshot version number to pull rather than hardcoding 1.1.1-SNAPSHOT
+            - maven-target:
+                maven-version: '{maven-version}'
+                goals: 'org.apache.maven.plugins:maven-dependency-plugin:get org.apache.maven.plugins:maven-dependency-plugin:copy -V -B -Dartifact=org.opendaylight.yangide:org.opendaylight.yangide.update-site:1.1.1-SNAPSHOT:zip -DoutputDirectory=$WORKSPACE'
+                settings: '{settings}'
+                global-settings: '{global-settings}'
+
 - builder:
     name: releng-generate-p2pom
     builders:
     name: releng-update-p2composite-metadata
     builders:
     - shell: !include-raw: include-raw-update-p2composite-metadata.sh
-    - maven-target:
-        maven-version: '{maven-version}'
-        pom: 'deploy-composite-repo.xml'
-        goals: 'clean deploy -V -Dmaven.repo.local=/tmp/r'
-        settings: '{settings}'
-        global-settings: '{global-settings}'
+    - conditional-step:
+        condition-kind: file-exists
+        condition-filename: deploy-composite-repo.xml
+        condition-basedir: workspace
+        steps:
+            - maven-target:
+                maven-version: '{maven-version}'
+                pom: 'deploy-composite-repo.xml'
+                goals: 'clean deploy -V -B -Dmaven.repo.local=/tmp/r'
+                settings: '{settings}'
+                global-settings: '{global-settings}'
 
 - builder:
     name: releng-stage-release
     builders:
         - shell: !include-raw: include-raw-stage-release.sh
+
+- wrapper:
+    # This wrapper is required for all jobs as it configures the wrappers
+    # needed by OpenDaylight infra.
+    name: opendaylight-infra-wrappers
+    wrappers:
+        - timeout:
+            type: absolute
+            timeout: '{build-timeout}'
+            timeout-var: 'BUILD_TIMEOUT'
+            fail: true
+        - ssh-agent-credentials:
+            users:
+                - 'opendaylight-jenkins-ssh'
+        - jclouds:
+            single-use: True
+        - openstack:
+            single-use: True