Merge "Add odl-sxp-routing feature to distribution"
[releng/builder.git] / jjb / integration / distribution / distribution-jobs.yaml
index f783d10ff2e8509467667f74d7ba55bef2d459af..ce35b2fa0ca3fac0d99debf0db17b0653e8ee4a1 100644 (file)
@@ -1,14 +1,59 @@
 ---
 - project:
-    name: distribution-jobs
+    name: distribution
+    jobs:
+      # gerrit- is generic template, distribution- is project specific.
+      - 'distribution-merge-{stream}'
+      - 'distribution-verify-{stream}'
+      - 'distribution-check-{stream}'
+      - 'distribution-sanity-{stream}'
+      - 'distribution-managed-{stream}'
+      - gerrit-maven-clm
+      - gerrit-maven-verify-dependencies
+      - gerrit-tox-verify
+      - '{project-name}-rtd-jobs':
+          project-pattern: integration/distribution
+          rtd-build-url: https://readthedocs.org/api/v2/webhook/opendaylight-distribution/34591/
+          rtd-token: 6247e7a21158a20b207470b8bf7719c676ff8944
+
+    project: integration/distribution
+    project-name: distribution
+    mvn-settings: integration-distribution-settings
+    mvn-goals: 'clean install dependency:tree -DoutputFile=dependency_tree.txt'
+    mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+    dependencies: ''
+    email-upstream: '[int/dist]'
+
+    stream:
+      - fluorine:
+          branch: 'master'
+          karaf-version: odl
+          # Self-Managed projects repos and features:
+          sm-repos: mvn:org.opendaylight.sxp/features-sxp//xml/features
+          sm-features: odl-sxp-routing
+      - oxygen:
+          branch: 'stable/oxygen'
+          karaf-version: karaf4
+
+- project:
+    name: distribution-sonar
+    jobs:
+      - gerrit-maven-sonar
+
+    project: integration/distribution
+    project-name: distribution
+    branch: master
+    mvn-settings: integration-distribution-settings
+    mvn-goals: clean install dependency:tree -DoutputFile=dependency_tree.txt
+    mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
 
 - job-template:
     name: 'distribution-verify-{stream}'
 
     project-type: freestyle
-    node: centos7-java-builder-2c-8g
+    node: centos7-builder-8c-8g
     concurrent: true
-    jdk: '{jre}'
+    jdk: '{java-version}'
 
     properties:
       - opendaylight-infra-properties:
           branch: '{branch}'
           refspec: 'refs/heads/{branch}'
           artifacts: '{archive-artifacts}'
-      - integration-patch-refspec:
-          branch: '$GERRIT_REFSPEC'
 
     scm:
       - gerrit-trigger-scm:
-          refspec: '$PATCHREFSPEC'
+          refspec: '$GERRIT_REFSPEC'
           choosing-strategy: 'gerrit'
 
     wrappers:
@@ -35,7 +78,7 @@
 
     triggers:
       - gerrit-trigger-patch-submitted:
-          server: '{server-name}'
+          gerrit-server-name: '{gerrit-server-name}'
           project: '{project}'
           branch: '{branch}'
           files: '**'
           global-settings-file: 'global-settings'
           settings-file: 'integration-settings'
       - maven-target:
-          maven-version: mvn33
+          maven-version: mvn35
           pom: pom.xml
           goals: |
               clean install dependency:tree -DoutputFile=dependency_tree.txt
               -Dstream={stream}
               -Dsft.heap.max=4g
-              {opendaylight-infra-parallel-mvn-opts}
+              -Pmanaged -Punmanaged
+              {opendaylight-infra-mvn-opts}
+          # {opendaylight-infra-parallel-mvn-opts} is bad when there are multiple big features in SFT.
           java-opts:
             - '-Xmx1024m -XX:MaxPermSize=256m'
           settings: integration-settings
 
     publishers:
       - findbugs
-      - jacoco-report
+      - lf-jacoco-report
       - lf-infra-publish
       - email-notification:
           email-recipients: '{email-recipients}'
-          email-prefix: '[int/dist]'
+          email-prefix: '[{project-name}]'
 
 - job-template:
     name: 'distribution-merge-{stream}'
     #     https://issues.apache.org/jira/browse/MNG-5666
 
     project-type: maven
-    node: '{build-node}'
-    jdk: '{jre}'
+    node: 'centos7-builder-8c-8g'
+    jdk: '{java-version}'
 
     properties:
       - opendaylight-infra-properties:
 
     triggers:
       - gerrit-trigger-patch-merged:
-          server-name: '{server-name}'
-          name: 'integration/distribution'
+          gerrit-server-name: '{gerrit-server-name}'
+          name: '{project}'
           branch: '{branch}'
 
     prebuilders:
           path: '$KARAF_ARTIFACT/src/main/assembly'
 
     maven:
-      maven-name: 'mvn33'
+      maven-name: 'mvn35'
       root-pom: 'pom.xml'
       goals: >
           clean install dependency:tree -DoutputFile=dependency_tree.txt -V -B
           -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
           -Dsft.heap.max=4g
           -Djenkins -Dmerge -Dstream={stream}
+          -Pmanaged -Punmanaged
       maven-opts: '-Xmx1024m -XX:MaxPermSize=256m'
-      settings: 'integration-settings'
+      settings: integration-settings
       settings-type: cfp
-      global-settings: 'global-settings'
+      global-settings: global-settings
       global-settings-type: cfp
 
     postbuilders:
-      - conditional-step:
-          condition-kind: file-exists
-          condition-filename: deploy-site.xml
-          condition-basedir: workspace
-
-          # The strategy here is intentional to run Maven site:deploy twice
-          # once using regular pom.xml to produce a staged-site which is
-          # then used by deploy-site.xml to push to Nexus. This is a
-          # workaround to Maven Site's default linking code which creates
-          # incorrect URLs for sites due to auto-detection assuming your
-          # project is configured in a certain way which ODL is not.
-          steps:
-            - maven-target:
-                maven-version: 'mvn33'
-                pom: pom.xml
-                goals: 'site:deploy -V -B -Dstream={stream}'
-                java-opts:
-                  - '-Xmx2g'
-                settings: 'integration-settings'
-                settings-type: cfp
-                global-settings: 'global-settings'
-                global-settings-type: cfp
-            - maven-target:
-                maven-version: 'mvn33'
-                pom: deploy-site.xml
-                goals: 'site:deploy -V -B -Dstream={stream}'
-                java-opts:
-                  - '-Xmx2g'
-                settings: 'integration-settings'
-                settings-type: cfp
-                global-settings: 'global-settings'
-                global-settings-type: cfp
       - integration-compare-distributions
     # TODO: the output of the above command is not *friendly* for the reader because the most important info
     # is listed last. This is fine/best for command line output, but for keeping in a file it would be better
           id: ''
           unique-version: true
           deploy-unstable: false
-      - jacoco-report
+      - lf-jacoco-report
       - lf-infra-publish
       - email-notification:
           email-recipients: '{email-recipients}'
-          email-prefix: '[int/dist]'
+          email-prefix: '[{project-name}]'
 
 - job-template:
     name: 'distribution-check-{stream}'
+
+    ######################
+    # Default parameters #
+    ######################
+
+    mvn-version: mvn35
+
+    #####################
+    # Job Configuration #
+    #####################
+
     # Like a {project}-distribution-check, but few steps less as there is no upstream project involved.
     disabled: false
 
     project-type: freestyle
-    node: '{build-node}'
+    node: 'centos7-builder-8c-8g'
     concurrent: true
-    jdk: '{jdk}'
+    jdk: '{java-version}'
 
     properties:
       - opendaylight-infra-properties:
           branch: '{branch}'
           refspec: 'refs/heads/{branch}'
           artifacts: '{archive-artifacts}'
+      - integration-distribution-stream:
+          stream: '{stream}'
       - distribution-karaf-version:
           karaf-version: '{karaf-version}'
       - maven-exec:
-          maven-version: mvn33
+          maven-version: mvn35
 
     scm:
       - integration-gerrit-scm:
 
     triggers:
       - gerrit-trigger-patch-submitted:
-          server: '{server-name}'
+          gerrit-server-name: '{gerrit-server-name}'
           project: '{project}'
           branch: '{branch}'
           files: '**'
 
     builders:
       - distribution-check-wipe
+      - inject:
+          properties-file: 'allowed_projects.txt'
       - distribution-check-build-project:
           pom: 'distribution/pom.xml'
-          mvn-opts: '{opendaylight-infra-parallel-mvn-opts}'
+          mvn-opts: '{opendaylight-infra-mvn-opts}'
+          mvn-version: '{mvn-version}'
+          # '{opendaylight-infra-parallel-mvn-opts}' is bad when there are multiple big features in SFT.
       - distribution-check-verify-groupid:
           gerrit-project: 'integration'
       - distribution-check-delete-snapshots
       - distribution-check-configure-remotes
       - distribution-check-repeat-project-build:
           pom: 'distribution/pom.xml'
-          mvn-opts: '{opendaylight-infra-parallel-mvn-opts}'
+          mvn-opts: '{opendaylight-infra-mvn-opts}'
+          mvn-version: '{mvn-version}'
+          # '{opendaylight-infra-parallel-mvn-opts}' is bad when there are multiple big features in SFT.
       - integration-set-variables
       - distribution-check-warn-9191
       - distribution-check-warn-9192
       - lf-infra-publish
 
 - job-template:
-    name: 'distribution-deploy-{stream}'
+    name: 'distribution-sanity-{stream}'
     # Goal: Verify distribution starts with no issues when all features are loaded.
-    # Operation: This job deploys the controller installing odl-integration-all.
-    # FIXME: List required variables.
+    # Operation: This job deploys odl-integration-all + list of UM features.
+    # This job works for both managed & self-managed distro.
 
     project-type: freestyle
-    node: centos7-java-builder-2c-8g
+    node: centos7-builder-4c-4g
     concurrent: false
 
     properties:
           branch: '{branch}'
           refspec: 'refs/heads/{branch}'
           artifacts: '{archive-artifacts}'
+      - integration-distribution-stream:
+          stream: '{stream}'
       - integration-distribution-branch:
           branch: '{branch}'
       - integration-bundle-url:
           bundle-url: '{bundle-url}'
+      - integration-repo-url:
+          repo-url: '{sm-repos}'
+      - integration-controller-features:
+          controller-features: '{sm-features}'
       - integration-jdk-version:
           jdkversion: '{jre}'
       - distribution-karaf-version:
       - opendaylight-infra-wrappers:
           build-timeout: '{build-timeout}'
 
-    # TODO: Trigger from sanity (instead of weekly) when this job is stable for {stream}.
-
     builders:
-      - distribution-deploy-verify
+      - integration-detect-variables
+      - distribution-check-bootup
 
     publishers:
       - email-notification:
           email-recipients: '{email-recipients}'
-          email-prefix: '[int/dist]'
+          email-prefix: '[{project-name}]'
       - integration-csit-archive-build
       - lf-infra-publish
 
 - job-template:
-    name: 'distribution-offline-{stream}'
-    # Goal: Verify distribution can start with no internet connection.
-    # Operation: This job deploys the controller removing any external repository definition.
-    # FIXME: List required variables.
+    name: 'distribution-managed-{stream}'
+    # Goal: Verify distribution starts with no issues when all features are loaded.
+    # Operation: This job deploys odl-integration-all.
+    # This job works for just managed distro.
 
     project-type: freestyle
-    node: centos7-java-builder-2c-8g
+    node: centos7-builder-4c-4g
     concurrent: false
 
     properties:
           branch: '{branch}'
           refspec: 'refs/heads/{branch}'
           artifacts: '{archive-artifacts}'
+      - integration-distribution-stream:
+          stream: '{stream}'
       - integration-distribution-branch:
           branch: '{branch}'
       - integration-bundle-url:
       - integration-jdk-version:
           jdkversion: '{jre}'
       - distribution-karaf-version:
-          karaf-version: '{karaf-version}'
+          karaf-version: 'karaf4'
 
     wrappers:
       - opendaylight-infra-wrappers:
           build-timeout: '{build-timeout}'
 
-    # TODO: Trigger from sanity (instead of weekly) when this job is stable for {stream}.
-
     builders:
-      - distribution-deploy-offline
+      - integration-detect-variables
+      - distribution-check-bootup
 
     publishers:
       - email-notification:
           email-recipients: '{email-recipients}'
-          email-prefix: '[int/dist]'
+          email-prefix: '[{project-name}]'
       - integration-csit-archive-build
       - lf-infra-publish
+
+- view:
+    name: distribution
+    description: 'List of distribution jobs'
+    regex: '^(integration-)?distribution-.*'
+    <<: *releng_view_common