Distribution test optimization
[releng/builder.git] / jjb / autorelease / autorelease-templates.yaml
index 5ac36ad7c3499ca4c9a1a09f180591421f9d746f..6ba0a0b66d36501a5d2ef58e6942668541a0d447 100644 (file)
+---
 # Autorelease build jobs
-
 - job-template:
     name: 'autorelease-release-{stream}'
 
     project-type: freestyle
     node: centos7-autorelease-4c-16g
     jdk: '{jdk}'
+    cron: 'H 0 * * *'
 
     properties:
-        - opendaylight-infra-properties:
-            build-days-to-keep: '30'
-
-    parameters:
-        - maven-exec:
-            maven-version: 'mvn33'
-        - opendaylight-infra-parameters:
-            project: '{project}'
-            branch: '{branch}'
-            refspec: 'refs/heads/{branch}'
-            artifacts: '{archive-artifacts}'
-        - autorelease-release-tag:
-            release-tag: '{next-release-tag}'
-        - autorelease-release-branch:
-            release-branch: '{branch}'
-
-    scm:
-        - git:
-            credentials-id: 'opendaylight-jenkins-ssh'
-            url: '$GIT_BASE'
-            refspec: '$GERRIT_REFSPEC'
-            branches:
-                - '$GERRIT_BRANCH'
-            choosing-strategy: 'gerrit'
-            skip-tag: true
-            submodule:
-                recursive: true
-                timeout: 60
-
-    wrappers:
-        - opendaylight-infra-wrappers:
-            build-timeout: '1440'
-
-    triggers:
-        - timed: 'H 0 * * *'
-
-    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
-        - wipe-local-maven-repo
-        - jacoco-nojava-workaround
-        - shell: "./scripts/list-project-dependencies.sh"
-        - autorelease-determine-merge-order
-        - autorelease-cfp:
-            autorelease-settings: 'autorelease-settings'
-            odl-global-settings: 'odl-global-settings'
-        - autorelease-generate-taglist
-        - autorelease-distribute-taglist
-        - distribute-build-url:
-            path: 'integration/distribution/distribution-karaf/src/main/assembly'
-        - autorelease-generate-release-patches
-        # In a perfect world projects should be releasing separately and we consume them
-        # via a project that pulls the release bits from each project from Nexus.
-        # Keep the patches compatible with that ideal, but apply an edit
-        # to enable building in a single maven reactor afterwards.
-        - autorelease-fix-relative-paths
-        - maven-target:
-              maven-version: 'mvn33'
-              pom: 'pom.xml'
-              goals: 'clean deploy -V -B -Pintegrationtests,docs,repoBuild -Djenkins -Dcheckstyle.skip=true -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r -DaltDeploymentRepository=staging::default::file:hide/from/pom/files/stage'
-              java-opts:
-                - '-Xmx10g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
-              settings: 'autorelease-settings'
-              settings-type: cfp
-              global-settings: 'odl-global-settings'
-              global-settings-type: cfp
-        - autorelease-maven-deploy
-        - autorelease-get-integration-test-variables
-        - autorelease-maven-sources:
-            maven-version: 'mvn33'
-            settings: 'autorelease-settings'
-            global-settings: 'odl-global-settings'
-        - autorelease-maven-sources-post-process
-        - autorelease-sys-stats
-        - shell: |
-            mkdir -p archives/
-            cp *.log *.prop $_
-
-    publishers:
-        - opendaylight-infra-notify-status
-        - archive:
-            # Need to archive dependencies.log in Jenkins to provide a simple
-            # way for downstream jobs to pull the latest version of this file
-            # in their builds.
-            artifacts: 'dependencies.log'
-        - email-notification:
-            email-recipients: '{email-recipients}'
-            email-prefix: '[autorelease]'
-        - trigger-parameterized-builds:
-            - project: 'integration-distribution-test-{integration-test}'
-              condition: UNSTABLE_OR_BETTER
-              property-file: variables.jenkins-trigger
-              fail-on-missing: true
-            - project: 'packaging-build-rpm-master'
-              condition: UNSTABLE_OR_BETTER
-              predefined-parameters: DOWNLOAD_URL=$BUNDLEURL
-              property-file: variables.jenkins-trigger
-              fail-on-missing: true
-        - opendaylight-infra-shiplogs:
-            maven-version: 'mvn33'
-
-
-- job-template:
-    name: 'autorelease-project-report-{stream}'
-
-    project-type: freestyle
-    node: centos7-java-builder-2c-8g
-
-    properties:
-        - opendaylight-infra-properties:
-            build-days-to-keep: '{build-days-to-keep}'
+      - opendaylight-infra-properties:
+          build-days-to-keep: '30'
 
     parameters:
-        - opendaylight-infra-parameters:
-            project: '{project}'
-            branch: '{branch}'
-            refspec: 'refs/heads/{branch}'
-            artifacts: '{archive-artifacts}'
-        - string:
-            name: REPORT_DIR
-            default: '$WORKSPACE/project-reports'
-            description: "The directory containing project reports"
+      - maven-exec:
+          maven-version: 'mvn33'
+      - opendaylight-infra-parameters:
+          project: '{project}'
+          branch: '{branch}'
+          refspec: 'refs/heads/{branch}'
+          artifacts: '{archive-artifacts}'
+      - autorelease-release-tag:
+          release-tag: '{next-release-tag}'
+      - autorelease-release-branch:
+          release-branch: '{branch}'
 
     scm:
-        - git:
-            credentials-id: 'opendaylight-jenkins-ssh'
-            url: '$GIT_BASE'
-            refspec: '$GERRIT_REFSPEC'
-            branches:
-                - '$GERRIT_BRANCH'
-            choosing-strategy: 'gerrit'
-            skip-tag: true
-            submodule:
-                recursive: true
+      - git:
+          credentials-id: 'opendaylight-jenkins-ssh'
+          url: '$GIT_BASE'
+          refspec: '$GERRIT_REFSPEC'
+          branches:
+            - '$GERRIT_BRANCH'
+          choosing-strategy: 'gerrit'
+          skip-tag: true
+          submodule:
+            recursive: true
+            timeout: 60
 
     wrappers:
-        - opendaylight-infra-wrappers:
-            build-timeout: '30'
+      - opendaylight-infra-wrappers:
+          build-timeout: '1440'
 
     triggers:
-        - timed: '0 0 * * 0'
+      - timed: '{cron}'
 
     builders:
-        - shell: 'echo "DATE=`date +%Y-%m-%d`" > $WORKSPACE/variables.prop'
-        - inject:
-            properties-file: variables.prop
-        - autorelease-generate-project-report
-        - shell: "./scripts/list-project-dependencies.sh"
-        - autorelease-determine-merge-order
-        - autorelease-sys-stats
+      # 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
+      - wipe-local-maven-repo
+      - jacoco-nojava-workaround
+      - shell: "./scripts/list-project-dependencies.sh"
+      - autorelease-determine-merge-order
+      - autorelease-cfp:
+          autorelease-settings: 'autorelease-settings'
+          odl-global-settings: 'odl-global-settings'
+      - autorelease-generate-taglist
+      - autorelease-distribute-taglist
+      - distribute-build-url:
+          path: 'integration/distribution/distribution-karaf/src/main/assembly'
+      - autorelease-generate-release-patches
+      # In a perfect world projects should be releasing separately and we consume them
+      # via a project that pulls the release bits from each project from Nexus.
+      # Keep the patches compatible with that ideal, but apply an edit
+      # to enable building in a single maven reactor afterwards.
+      - autorelease-fix-relative-paths
+      - maven-target:
+          maven-version: 'mvn33'
+          pom: 'pom.xml'
+          goals: >
+              clean deploy -V -B -Pintegrationtests,docs,repoBuild -Djenkins
+              -Dcheckstyle.skip=true
+              -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
+              -DaltDeploymentRepository=staging::default::file:hide/from/pom/files/stage
+          java-opts:
+            - '-Xmx10g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
+          settings: 'autorelease-settings'
+          settings-type: cfp
+          global-settings: 'odl-global-settings'
+          global-settings-type: cfp
+      - autorelease-maven-deploy
+      - autorelease-get-integration-test-variables
+      - autorelease-maven-sources:
+          maven-version: 'mvn33'
+          settings: 'autorelease-settings'
+          global-settings: 'odl-global-settings'
+      - autorelease-maven-sources-post-process
+      - autorelease-sys-stats
+      - shell: |
+          mkdir -p archives/
+          cp *.log *.prop $_
 
     publishers:
-        - email-ext:
-            attachments: 'project-reports/*.log'
-            recipients: 'skitt@redhat.com thanh.ha@linuxfoundation.org'
-            reply-to: dev@lists.opendaylight.org
-            content-type: default
-            subject: '[releng] ODL {stream} project report for ${{ENV, var="DATE"}}'
-            body: |
-                This is a project report generated on $DATE listing the commit
-                history of ODL projects for the past week. See attached
-                git-report.log
-                Archive also available on Jenkins at $BUILD_URL
-            always: true
-        - opendaylight-infra-shiplogs:
-            maven-version: 'mvn33'
+      - opendaylight-infra-notify-status
+      - archive:
+          # Need to archive dependencies.log in Jenkins to provide a simple
+          # way for downstream jobs to pull the latest version of this file
+          # in their builds.
+          artifacts: 'dependencies.log'
+      - trigger-parameterized-builds:
+          - project: 'integration-distribution-test-{integration-test}'
+            condition: UNSTABLE_OR_BETTER
+            property-file: variables.jenkins-trigger
+            fail-on-missing: true
+          - project: 'integration-distribution-test-{integration-test}'
+            condition: FAILED
+          - project: 'packaging-build-rpm-master'
+            condition: UNSTABLE_OR_BETTER
+            predefined-parameters: DOWNLOAD_URL=$BUNDLEURL
+            property-file: variables.jenkins-trigger
+            fail-on-missing: true
+      - opendaylight-infra-shiplogs:
+          maven-version: 'mvn33'