Revert "Revert "Add multiplatform jobs for policy docker images""
[ci-management.git] / jjb / global-templates-java.yaml
index ef91f81..d6104d8 100644 (file)
@@ -1,69 +1,5 @@
 ---
-- job-template:
-    # Job template for Java verify jobs
-    #
-    # The purpose of this job template is to run:
-    # 1. maven clean install -DskipTests=true
-    #
-    # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
-
-    name: '{project-name}-{stream}-verify-java-skip-tests'
-
-    project-type: freestyle
-    concurrent: true
-    node: '{build-node}'
-
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: '$GERRIT_REFSPEC'
-          choosing-strategy: 'gerrit'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      - gerrit-trigger-patch-submitted:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-          files: '**'
-
-    builders:
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-      - maven-target:
-          maven-version: '{maven-version}'
-          goals: 'clean install -DskipTests=true -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-          maven-opts:
-            - maven.test.skip=true
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-- job-template:
+- job-template: &verify_java_defaults
     # Job template for Java verify jobs
     #
     # The purpose of this job template is to run:
     project-type: freestyle
     concurrent: true
     node: '{build-node}'
-
+    build-env-variables: ''
+    pattern: '**'
+    pom:
+    mvn-opts: ''
+    java-opts: ''
     properties:
       - infra-properties:
           build-days-to-keep: '{build-days-to-keep}'
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
-          files: '**'
+          files: '{obj:pattern}'
 
     builders:
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
+      - inject:
+          properties-content: "{build-env-variables}"
       - maven-target:
           maven-version: '{maven-version}'
+          pom: '{obj:pom}'
           goals: 'clean install -B
             -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn {mvn-params}'
+          properties:
+            - MAVEN_OPTS='{mvn-opts}'
+          java-opts:
+            - "{java-opts}"
           settings: '{mvn-settings}'
           settings-type: cfp
           global-settings: 'global-settings'
     # Required Variables:
     #     branch:    git branch (eg. stable/lithium or master)
 
+    <<: *verify_java_defaults
     name: '{project-name}-{stream}-verify-java-checkstyle'
-    project-type: freestyle
-    concurrent: true
-    node: '{build-node}'
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-      - maven-params:
-          mvn-params: '{mvn-params}'
-    scm:
-      - gerrit-trigger-scm:
-          refspec: '$GERRIT_REFSPEC'
-          choosing-strategy: 'gerrit'
-          submodule-recursive: '{submodule-recursive}'
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-    triggers:
-      - gerrit-trigger-patch-submitted:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-          files: '**'
-    builders:
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-      - maven-target:
-          maven-version: '{maven-version}'
-          goals: 'clean install -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn {mvn-params}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
     publishers:
       - infra-shiplogs:
           maven-version: '{maven-version}'
       - checkstyle-result
 
-- job-template:
-    # Job template for Java verify jobs that takes a maven template
-    #
-    # The purpose of this job template is to run:
-    # 1. maven clean install -P {mvn-profile}
-    #
-    # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
-
-    name: '{project-name}-{stream}-verify-profile-java'
-
-    project-type: freestyle
-    concurrent: true
-    node: '{build-node}'
-
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: '$GERRIT_REFSPEC'
-          choosing-strategy: 'gerrit'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      - gerrit-trigger-patch-submitted:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-          files: '{files}'
-
-    builders:
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-      - maven-target:
-          maven-version: '{maven-version}'
-          goals: 'clean install -P {mvn-profile} -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
 - job-template:
     # Job template for Java verify jobs with POM not at the root
     #
     #     pattern:   ant file-path pattern relative to the workspace used to
     #                trigger the job
 
+    <<: *verify_java_defaults
     name: '{project-name}-{stream}-{subproject}-verify-java'
 
-    project-type: freestyle
-    concurrent: true
-    node: '{build-node}'
-
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: '$GERRIT_REFSPEC'
-          choosing-strategy: 'gerrit'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      - gerrit-trigger-patch-submitted:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-          files: '{pattern}'
-
-    builders:
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-      - maven-target:
-          maven-version: '{maven-version}'
-          pom: '{pom}'
-          goals: 'clean install -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
 - job-template:
     # Job template for Java daily release jobs
     #
 
     triggers:
       # 11 AM UTC
-      - timed: 'H 11 * * *'
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
 
     builders:
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
           build-timeout: '{build-timeout}'
     triggers:
       # 11 AM UTC
-      - timed: 'H 11 * * *'
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
     builders:
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
           steps:
             - inject:
                 properties-file: version.properties
-            - maven-target:
+            - maven-set-release-version:
                 maven-version: '{maven-version}'
-                goals: 'versions:set versions:update-child-modules versions:commit -B'
-                properties:
-                  - 'newVersion=${{release_version}}'
-                settings: '{mvn-settings}'
-                settings-type: cfp
-                global-settings: 'global-settings'
-                global-settings-type: cfp
+                mvn-settings: '{mvn-settings}'
+                pom:
       - maven-target:
           maven-version: '{maven-version}'
           goals: 'clean deploy -B
 
     triggers:
       # 11 AM UTC
-      - timed: 'H H(10-17) * * *'
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
 
     builders:
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
 
       - inject:
           properties-file: version.properties
-      - maven-target:
+      - maven-set-release-version:
           maven-version: '{maven-version}'
-          goals: 'versions:set versions:update-child-modules versions:commit -B'
-          properties:
-            - 'newVersion=${{release_version}}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
+          mvn-settings: '{mvn-settings}'
+          pom:
 
       - maven-target:
           maven-version: '{maven-version}'
 
     triggers:
       # 11 AM UTC
-      - timed: 'H 11 * * *'
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
 
     builders:
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
 
       - inject:
           properties-file: version.properties
-      - maven-target:
+      - maven-set-release-version:
           maven-version: '{maven-version}'
-          goals: 'versions:set versions:update-child-modules versions:commit -B'
-          properties:
-            - 'newVersion=${{release_version}}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
+          mvn-settings: '{mvn-settings}'
+          pom:
 
       - maven-target:
           maven-version: '{maven-version}'
 
     triggers:
       # 11 AM UTC
-      - timed: 'H 11 * * *'
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
 
     builders:
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
     project-type: freestyle
     node: '{build-node}'
     disabled: '{disabled}'
+    version-properties: 'version.properties'
     maven-deploy-properties:
     properties:
       - infra-properties:
 
     triggers:
       # 11 AM UTC
-      - timed: 'H 11 * * *'
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
 
     builders:
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
 
       - inject:
-          properties-file: version.properties
-      - maven-target:
+          properties-file: '{version-properties}'
+      - maven-set-release-version:
           maven-version: '{maven-version}'
+          mvn-settings: '{mvn-settings}'
           pom: '{pom}'
-          goals: 'versions:set versions:update-child-modules versions:commit -B'
-          properties:
-            - 'newVersion=${{release_version}}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
 
       - maven-target:
           maven-version: '{maven-version}'
       - infra-shiplogs:
           maven-version: '{maven-version}'
 
-- job-template:
-    # Job template for Java daily release jobs with POM not at the root
+
+- job-template: &merge_java_defaults
+    # Job template for Java merge jobs
     #
     # The purpose of this job template is to run:
-    # 1. maven set versions
-    # 2. maven clean deploy with Sonar scans
-    #
-    # This job supports subprojects.
+    # 1. maven clean deploy
     #
     # Required Variables:
     #     branch:    git branch (eg. stable/lithium or master)
-    #     pom:       name/location of the pom.xml file relative to the workspace
 
-    name: '{project-name}-{stream}-{subproject}-release-version-java-shell-daily'
+    name: '{project-name}-{stream}-merge-java'
 
     project-type: freestyle
     node: '{build-node}'
-    disabled: '{disabled}'
-    maven-deploy-properties:
+    pattern: '**'
+    pom:
+    mvn_properties: []
+    mvn-params: ''
+    mvn-opts: ''
+    java-opts: ''
+
     properties:
       - infra-properties:
           build-days-to-keep: '{build-days-to-keep}'
           build-timeout: '{build-timeout}'
 
     triggers:
-      # 11 AM UTC
-      - timed: 'H 11 * * *'
-      - gerrit-trigger-release-manually:
+      - gerrit-trigger-patch-merged:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
+          files: '{pattern}'
 
     builders:
+      - lf-infra-pre-build
+      - lf-infra-docker-login:
+          global-settings-file: 'global-settings'
+          settings-file: '{mvn-settings}'
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
-
-      - inject:
-          properties-file: version.properties
-      - maven-target:
-          maven-version: '{maven-version}'
-          pom: '{pom}'
-          goals: 'versions:set versions:update-child-modules versions:commit -B'
-          properties:
-            - 'newVersion=${{release_version}}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-      - shell: '{script}'
-
-      - maven-target:
-          maven-version: '{maven-version}'
-          pom: '{pom}'
-          goals: 'clean deploy sonar:sonar -Dsonar.host.url=${{SONAR}} -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          properties:
-            - '{maven-deploy-properties}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-- job-template:
-    # Job template for Java merge jobs
-    #
-    # The purpose of this job template is to run:
-    # 1. maven clean deploy
-    #
-    # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
-
-    name: '{project-name}-{stream}-merge-java'
-
-    project-type: freestyle
-    node: '{build-node}'
-
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      - gerrit-trigger-patch-merged:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-          files: '**'
-
-    builders:
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-      - maven-target:
-          maven-version: '{maven-version}'
-          goals: 'clean deploy -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-- job-template:
-    # Job template for Java merge jobs based on
-    #   '{project-name}-{stream}-merge-java'
-    # The purpose of this job template is to run:
-    # 1. maven clean deploy
-    #
-    # This project supports maven properties.
-    #
-    # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
-    #     maven-properties: properties passed to maven
-
-    name: '{project-name}-{stream}-merge-properties-java'
-
-    project-type: freestyle
-    node: '{build-node}'
-
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      - gerrit-trigger-patch-merged:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-          files: '**'
-
-    builders:
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-      - maven-target:
-          maven-version: '{maven-version}'
-          goals: 'clean deploy -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-          properties: '{obj:mvn_properties}'
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-- job-template:
-    # Job template for Java merge jobs that takes a maven template
-    #
-    # The purpose of this job template is to run:
-    # 1. maven clean deploy -P {mvn-profile}
-    #
-    # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
-
-    name: '{project-name}-{stream}-merge-profile-java'
-
-    project-type: freestyle
-    node: '{build-node}'
-
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      - gerrit-trigger-patch-merged:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-          files: '{files}'
-
-    builders:
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-
-      - docker-login
-
-      - maven-target:
-          maven-version: '{maven-version}'
-          goals: 'clean deploy -P {mvn-profile} -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-          properties:
-            - docker.pull.registry=nexus3.onap.org:10001
-            - docker.push.registry=nexus3.onap.org:10003
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-- job-template:
-    # Job template for Java merge jobs that should also be triggered by upstream
-    # merges
-    #
-    # Required Variables:
-    #   stream:         release stream
-    #   branch:         git branch
-    #   dependencies:   fully qualified upstream job name to trigger on
-    #                   this may be ''
-
-    name: '{project-name}-{stream}-downstream-merge-java'
-
-    project-type: freestyle
-    node: '{build-node}'
-
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      - reverse:
-          jobs: '{dependencies}'
-          result: 'success'
-      - gerrit-trigger-patch-merged:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-          files: '**'
-
-    builders:
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-      - maven-target:
-          maven-version: '{maven-version}'
-          goals: 'clean deploy -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-- job-template:
-    # Job template for Java merge jobs with POM not at the root
-    #
-    # The purpose of this job template is to run:
-    # 1. maven clean deploy
-    #
-    # This job supports subprojects.
-    #
-    # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
-    #     pom:       name/location of the pom.xml file relative to the workspace
-    #     pattern:   ant file-path pattern relative to the workspace used to
-    #                trigger the job
-
-    name: '{project-name}-{stream}-{subproject}-merge-java'
-
-    project-type: freestyle
-    node: '{build-node}'
-
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      - gerrit-trigger-patch-merged:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-          files: '{pattern}'
-
-    builders:
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-      - maven-target:
-          maven-version: '{maven-version}'
-          pom: '{pom}'
-          goals: 'clean deploy -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-- job-template:
-    # Job template for Docker daily jobs
-    #
-    # The purpose of this job template is to run:
-    # 1. login to the docker registry
-    # 2. docker push
-    #
-    # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
-
-    name: '{project-name}-{stream}-docker-java-daily'
-    id: '{project-name}-{stream}-docker-java-daily'
-    project-type: freestyle
-    node: 'ubuntu1604-docker-8c-8g'
-    disabled: '{disabled}'
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-      - maven-params:
-          mvn-params: '{mvn-params}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      # 12 AM UTC
-      - timed: 'H 12 * * *'
-      - gerrit-trigger-release-manually:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-
-    builders:
-
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-
-      - docker-login
-
-      - maven-docker-push-daily:
-          maven-version: '{maven-version}'
-          mvn-settings: '{mvn-settings}'
-          pom: '{docker-pom}'
-          # use default as mvn-profile if profile is not needed
-          mvn-profile: '{mvn-profile}'
-          mvn-params: '{mvn-params}'
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-- job-template:
-    # Job template for Docker daily jobs
-    #
-    # The purpose of this job template is to run:
-    # 1. login to the docker registry
-    # 2. docker push
-    #
-    # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
-
-    name: '{project-name}-{stream}-docker-java-daily'
-    id: docker-java-daily
-    project-type: freestyle
-    node: '{build-node}'
-    disabled: '{disabled}'
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-      - maven-params:
-          mvn-params: '{mvn-params}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers-docker-build:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      # 12 AM UTC
-      - timed: 'H 12 * * *'
-      - gerrit-trigger-release-manually:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-
-    builders:
-
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-
-      - docker-login
-
-      - maven-docker-push-daily:
-          maven-version: '{maven-version}'
-          mvn-settings: '{mvn-settings}'
-          pom: '{docker-pom}'
-          # use default as mvn-profile if profile is not needed
-          mvn-profile: '{mvn-profile}'
-          mvn-params: '{mvn-params}'
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-
-- job-template:
-    # Job template for building & pushing docker images
-    #
-    # The purpose of this job template is to run:
-    #  1. login to the docker registry
-    #  2. maven clean deploy on the specified profile
-    #
-    # This job uses a conditional regex match step to set versions.
-    # This template supports maven properties.
-    #
-    # Required Variables:
-    #     pom:       name/location of the pom.xml file relative to the workspace
-    #     profile:   the docker profile defined in the pom
-    #     maven-properties: properties passed to maven
-
-    name: '{project-name}-{stream}-docker-java-properties-daily'
-    project-type: freestyle
-    node: 'ubuntu1604-docker-8c-8g'
-    disabled: '{disabled}'
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-      - maven-params:
-          mvn-params: '{mvn-params}'
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-    triggers:
-      # 12 AM UTC
-      - timed: 'H 12 * * *'
-      - gerrit-trigger-release-manually:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-    builders:
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-      - conditional-step:
-          condition-kind: regex-match
-          regex: DoSetVersion
-          label: '{setVersion}'
-          steps:
-            - inject:
-                properties-file: version.properties
-            - maven-target:
-                maven-version: '{maven-version}'
-                goals: 'versions:set versions:update-child-modules versions:commit -B'
-                properties:
-                  - 'newVersion=${{release_version}}'
-                settings: '{mvn-settings}'
-                settings-type: cfp
-                global-settings: 'global-settings'
-                global-settings-type: cfp
-      - docker-login
-      - maven-docker-push-daily:
-          maven-version: '{maven-version}'
-          mvn-settings: '{mvn-settings}'
-          pom: '{docker-pom}'
-          properties: '{maven-properties}'
-          # use default as mvn-profile if profile is not needed
-          mvn-profile: '{mvn-profile}'
-          mvn-params: '{mvn-params}'
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-- job-template:
-    # Job template for building & pushing docker images
-    #
-    # The purpose of this job template is to run:
-    #  1. login to the docker registry
-    #  2. run a specified shell builder
-    #
-    # Required Variables:
-    #     pom:       name/location of the pom.xml file relative to the workspace
-    #     maven-properties: properties passed to maven
-
-    name: '{project-name}-{stream}-docker-java-shell-daily'
-    project-type: freestyle
-    node: 'ubuntu1604-docker-8c-8g'
-    disabled: '{disabled}'
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      # 12 AM UTC
-      - timed: 'H 12 * * *'
-      - gerrit-trigger-release-manually:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-
-    builders:
-
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-
-      - docker-login
-
-      - maven-target:
-          maven-version: '{maven-version}'
-          goals: '{mvn-goals}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-      - shell: '{script}'
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-- job-template:
-    # Job template for building & pushing docker images
-    #
-    # The purpose of this job template is to run:
-    #  1. login to the docker registry
-    #  2. inject a version.properties file and set versions
-    #  3. run a specified shell builder
-    #
-    # Required Variables:
-    #     pom:       name/location of the pom.xml file relative to the workspace
-    #     maven-properties: properties passed to maven
-
-    name: '{project-name}-{stream}-docker-java-version-shell-daily'
-    project-type: freestyle
-    node: 'ubuntu1604-docker-8c-8g'
-    disabled: '{disabled}'
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      # 12 AM UTC
-      - timed: 'H 12 * * *'
-      - gerrit-trigger-release-manually:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-
-    builders:
-
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-
-      - inject:
-          properties-file: version.properties
-
-      - maven-target:
-          maven-version: '{maven-version}'
-          goals: 'versions:set versions:update-child-modules versions:commit -B'
-          properties:
-            - 'newVersion=${{release_version}}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-      - docker-login
-
-      - maven-target:
-          maven-version: '{maven-version}'
-          goals: '{mvn-goals}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-      - shell: '{script}'
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
-- job-template:
-    # Job template for building & pushing docker images
-    #
-    # The purpose of this job template is to run:
-    #  1. login to the docker registry
-    #  2. inject a version.properties file and set versions
-    #  3. run a specified shell builder
-    #
-    # This template supports subprojects.
-    #
-    # Required Variables:
-    #     pom:       name/location of the pom.xml file relative to the workspace
-    #     maven-properties: properties passed to maven
-
-    name: '{project-name}-{stream}-{subproject}-docker-java-version-shell-daily'
-    project-type: freestyle
-    node: 'ubuntu1604-docker-8c-8g'
-    disabled: '{disabled}'
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
-
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
-
-    triggers:
-      # 12 AM UTC
-      - timed: 'H 12 * * *'
-      - gerrit-trigger-release-manually:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-
-    builders:
-
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-
-      - inject:
-          properties-file: version.properties
-
-      - maven-target:
-          maven-version: '{maven-version}'
-          pom: '{pom}'
-          goals: 'versions:set versions:update-child-modules versions:commit -B'
-          properties:
-            - 'newVersion=${{release_version}}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-      - docker-login
-
       - maven-target:
           maven-version: '{maven-version}'
-          pom: '{pom}'
-          goals: '{mvn-goals}'
+          pom: '{obj:pom}'
+          goals: 'clean deploy -B {mvn-params}
+            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
+          properties:
+            - MAVEN_OPTS='{mvn-opts}'
+          java-opts:
+            - "{java-opts}"
           settings: '{mvn-settings}'
           settings-type: cfp
           global-settings: 'global-settings'
           global-settings-type: cfp
-
-      - shell: '{script}'
+          properties: '{obj:mvn_properties}'
 
     publishers:
       - infra-shiplogs:
           maven-version: '{maven-version}'
 
 - job-template:
-    # Job template for building & pushing docker images
-    #
+    # Job template for Java merge jobs based on
+    #   '{project-name}-{stream}-merge-java'
     # The purpose of this job template is to run:
-    #  1. login to the docker registry
-    #  2. inject a version.properties file and set versions
-    #  3. run a docker push
+    # 1. maven clean deploy
+    #
+    # This project supports maven properties.
     #
     # Required Variables:
-    #     pom:       name/location of the pom.xml file relative to the workspace
-    #     profile:   the docker profile defined in the pom
+    #     branch:    git branch (eg. stable/lithium or master)
     #     maven-properties: properties passed to maven
 
-    name: '{project-name}-{stream}-docker-version-java-daily'
-    id: '{project-name}-{stream}-docker-version-java-daily'
-    project-type: freestyle
-    node: 'ubuntu1604-docker-8c-8g'
-    disabled: '{disabled}'
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-      - maven-params:
-          mvn-params: '{mvn-params}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
+    <<: *merge_java_defaults
+    name: '{project-name}-{stream}-merge-properties-java'
 
-    wrappers:
-      - infra-wrappers:
-          build-timeout: '{build-timeout}'
+- job-template:
+    # Job template for Java merge jobs that takes a maven template
+    #
+    # The purpose of this job template is to run:
+    # 1. maven clean deploy -P {mvn-profile}
+    #
+    # Required Variables:
+    #     branch:    git branch (eg. stable/lithium or master)
 
-    triggers:
-      # 12 AM UTC
-      - timed: 'H 12 * * *'
-      - gerrit-trigger-release-manually:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
+    <<: *merge_java_defaults
+    name: '{project-name}-{stream}-merge-profile-java'
 
     builders:
-
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
 
-      - inject:
-          properties-file: version.properties
+      - docker-login
 
       - maven-target:
           maven-version: '{maven-version}'
-          goals: 'versions:set versions:update-child-modules versions:commit -B'
-          properties:
-            - 'newVersion=${{release_version}}'
+          goals: 'clean deploy -P {mvn-profile} -B
+            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
           settings: '{mvn-settings}'
           settings-type: cfp
           global-settings: 'global-settings'
           global-settings-type: cfp
-
-      - docker-login
-
-      - maven-docker-push-daily:
-          maven-version: '{maven-version}'
-          mvn-settings: '{mvn-settings}'
-          pom: '{docker-pom}'
-          # use default as mvn-profile if profile is not needed
-          mvn-profile: '{mvn-profile}'
-          mvn-params: '{mvn-params}'
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
+          properties:
+            - docker.pull.registry=nexus3.onap.org:10001
+            - docker.push.registry=nexus3.onap.org:10003
 
 - job-template:
-    # Job template for building & pushing docker images
+    # Job template for Java merge jobs with POM not at the root
     #
     # The purpose of this job template is to run:
-    #  1. login to the docker registry
-    #  2. inject a version.properties file and set versions
-    #  3. run a docker push
+    # 1. maven clean deploy
+    #
+    # This job supports subprojects.
     #
     # Required Variables:
+    #     branch:    git branch (eg. stable/lithium or master)
     #     pom:       name/location of the pom.xml file relative to the workspace
-    #     profile:   the docker profile defined in the pom
-    #     maven-properties: properties passed to maven
+    #     pattern:   ant file-path pattern relative to the workspace used to
+    #                trigger the job
 
-    name: '{project-name}-{stream}-docker-version-java-daily'
-    id: 'docker-version-java-daily'
+    <<: *merge_java_defaults
+    name: '{project-name}-{stream}-{subproject}-merge-java'
+
+- job-template: &docker_java_defaults
+    # Job template for Docker daily jobs
+    #
+    # The purpose of this job template is to run:
+    # 1. login to the docker registry
+    # 2. docker push
+    #
+    # Required Variables:
+    #     branch:    git branch (eg. stable/lithium or master)
+
+    name: '{project-name}-{stream}-docker-java-daily'
+    id: '{project-name}-{stream}-docker-java-daily'
     project-type: freestyle
     node: '{build-node}'
     disabled: '{disabled}'
           submodule-recursive: '{submodule-recursive}'
 
     wrappers:
-      - infra-wrappers-docker-build:
+      - infra-wrappers:
           build-timeout: '{build-timeout}'
 
     triggers:
       # 12 AM UTC
-      - timed: 'H 12 * * *'
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
 
     builders:
-
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
 
-      - inject:
-          properties-file: version.properties
-
-      - maven-target:
-          maven-version: '{maven-version}'
-          goals: 'versions:set versions:update-child-modules versions:commit -B'
-          properties:
-            - 'newVersion=${{release_version}}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
       - docker-login
 
       - maven-docker-push-daily:
           maven-version: '{maven-version}'
 
 - job-template:
-    # Job template for building & pushing docker images
+    # Job template for Docker daily jobs
     #
     # The purpose of this job template is to run:
-    #  1. inject a version.properties file and set versions
-    #  2. login to the docker registry
-    #  3. run a docker push
-    #
-    # This job supports subprojects.
+    # 1. login to the docker registry
+    # 2. docker push
     #
     # Required Variables:
-    #     pom:       name/location of the pom.xml file relative to the workspace
-    #     maven-properties: properties passed to maven
-
-    name: '{project-name}-{stream}-{subproject}-docker-version-java-daily'
-    project-type: freestyle
-    node: 'ubuntu1604-docker-8c-8g'
-    disabled: '{disabled}'
-    properties:
-      - infra-properties:
-          build-days-to-keep: '{build-days-to-keep}'
-
-    parameters:
-      - infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-          refspec: 'refs/heads/{branch}'
-          artifacts: '{archive-artifacts}'
-      - maven-exec:
-          maven-version: '{maven-version}'
-      - maven-params:
-          mvn-params: '{mvn-params}'
-
-    scm:
-      - gerrit-trigger-scm:
-          refspec: ''
-          choosing-strategy: 'default'
-          submodule-recursive: '{submodule-recursive}'
+    #     branch:    git branch (eg. stable/lithium or master)
 
+    <<: *docker_java_defaults
+    name: '{project-name}-{stream}-docker-java-daily'
+    id: docker-java-daily
+    node: '{build-node}'
     wrappers:
-      - infra-wrappers:
+      - infra-wrappers-docker-build:
           build-timeout: '{build-timeout}'
 
-    triggers:
-      # 12 AM UTC
-      - timed: 'H 12 * * *'
-      - gerrit-trigger-release-manually:
-          server: '{server-name}'
-          project: '{project}'
-          branch: '{branch}'
-
-    builders:
-
-      - provide-maven-settings:
-          global-settings-file: 'global-settings'
-          settings-file: '{mvn-settings}'
-
-      - inject:
-          properties-file: version.properties
-
-      - maven-target:
-          maven-version: '{maven-version}'
-          pom: '{pom}'
-          goals: 'versions:set versions:update-child-modules versions:commit -B'
-          properties:
-            - 'newVersion=${{release_version}}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-      - docker-login
-
-      - maven-docker-push-daily:
-          maven-version: '{maven-version}'
-          pom: '{pom}'
-          mvn-settings: '{mvn-settings}'
-          pom: '{docker-pom}'
-          # use default as mvn-profile if profile is not needed
-          mvn-profile: '{mvn-profile}'
-          mvn-params: '{mvn-params}'
-
-    publishers:
-      - infra-shiplogs:
-          maven-version: '{maven-version}'
-
 - job-template:
-    # Job template for building & pushing docker images for AAI specific repos
+    # Job template for building & pushing docker images
     #
     # The purpose of this job template is to run:
     #  1. login to the docker registry
-    #  2. run maven goals
-    #  3. run include-docker-push.sh
+    #  2. maven clean deploy on the specified profile
+    #
+    # This job uses a conditional regex match step to set versions.
+    # This template supports maven properties.
     #
     # Required Variables:
     #     pom:       name/location of the pom.xml file relative to the workspace
+    #     profile:   the docker profile defined in the pom
     #     maven-properties: properties passed to maven
 
-    name: '{project-name}-{stream}-aai-docker-java-daily'
+    name: '{project-name}-{stream}-docker-java-properties-daily'
     project-type: freestyle
-    node: 'ubuntu1604-docker-8c-8g'
-    docker-image-name: ''
+    node: '{build-node}'
     disabled: '{disabled}'
     properties:
       - infra-properties:
           build-days-to-keep: '{build-days-to-keep}'
-
     parameters:
       - infra-parameters:
           project: '{project}'
           artifacts: '{archive-artifacts}'
       - maven-exec:
           maven-version: '{maven-version}'
-      - docker-image-name:
-          docker-image-name: '{docker-image-name}'
-
+      - maven-params:
+          mvn-params: '{mvn-params}'
     scm:
       - gerrit-trigger-scm:
           refspec: ''
           choosing-strategy: 'default'
           submodule-recursive: '{submodule-recursive}'
-
     wrappers:
       - infra-wrappers:
           build-timeout: '{build-timeout}'
-
     triggers:
       # 12 AM UTC
-      - timed: 'H 12 * * *'
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
-
     builders:
-
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
-
-      - docker-login
-
-      - maven-target:
-          maven-version: '{maven-version}'
-          pom: 'pom.xml'
-          goals: 'clean install -DskipTests -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-      - maven-target:
+      - conditional-step:
+          condition-kind: regex-match
+          regex: DoSetVersion
+          label: '{setVersion}'
+          steps:
+            - inject:
+                properties-file: version.properties
+            - maven-set-release-version:
+                maven-version: '{maven-version}'
+                mvn-settings: '{mvn-settings}'
+                pom:
+      - docker-login
+      - maven-docker-push-daily:
           maven-version: '{maven-version}'
-          pom: '{pom}'
-          goals: '{mvn-goals}'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-          properties:
-            - maven.test.skip=true
-            - docker.pull.registry=nexus3.onap.org:10001
-            - docker.push.registry=nexus3.onap.org:10003
-
-      - shell: !include-raw-escape: include-docker-push.sh
-
+          mvn-settings: '{mvn-settings}'
+          pom: '{docker-pom}'
+          properties: '{maven-properties}'
+          # use default as mvn-profile if profile is not needed
+          mvn-profile: '{mvn-profile}'
+          mvn-params: '{mvn-params}'
     publishers:
       - infra-shiplogs:
           maven-version: '{maven-version}'
 
 - job-template:
-    # Job template for building & pushing docker images for AAI specific repos
+    # Job template for building & pushing docker images
     #
     # The purpose of this job template is to run:
     #  1. login to the docker registry
-    #  2. run maven goals
-    #  3. run include-docker-push.sh
-    #
-    # This job supports subprojects
+    #  2. run a specified shell builder
     #
     # Required Variables:
     #     pom:       name/location of the pom.xml file relative to the workspace
     #     maven-properties: properties passed to maven
 
-    name: '{project-name}-{stream}-{subproject}-aai-docker-java-daily'
+    name: '{project-name}-{stream}-docker-java-shell-daily'
     project-type: freestyle
-    node: 'ubuntu1604-docker-8c-8g'
+    node: '{build-node}'
     disabled: '{disabled}'
-    docker-image-name: ''
-
     properties:
       - infra-properties:
           build-days-to-keep: '{build-days-to-keep}'
           artifacts: '{archive-artifacts}'
       - maven-exec:
           maven-version: '{maven-version}'
-      - docker-image-name:
-          docker-image-name: '{docker-image-name}'
 
     scm:
       - gerrit-trigger-scm:
 
     triggers:
       # 12 AM UTC
-      - timed: 'H 12 * * *'
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
 
     builders:
-
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
 
       - maven-target:
           maven-version: '{maven-version}'
-          pom: 'pom.xml'
-          goals: 'clean install -DskipTests -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          settings: '{mvn-settings}'
-          settings-type: cfp
-          global-settings: 'global-settings'
-          global-settings-type: cfp
-
-      - maven-target:
-          maven-version: '{maven-version}'
-          pom: '{pom}'
           goals: '{mvn-goals}'
           settings: '{mvn-settings}'
           settings-type: cfp
           global-settings: 'global-settings'
           global-settings-type: cfp
-          properties:
-            - maven.test.skip=true
-            - docker.pull.registry=nexus3.onap.org:10001
-            - docker.push.registry=nexus3.onap.org:10003
 
-      - shell: !include-raw-escape: include-docker-push.sh
+      - shell: '{script}'
 
     publishers:
       - infra-shiplogs:
           maven-version: '{maven-version}'
 
 - job-template:
-    # Job template for Java daily release jobs
+    # Job template for building & pushing docker images
     #
     # The purpose of this job template is to run:
-    # 1. inject a version.properties file and set versions
-    # 2. change version in all POM files to the release version specified
-    #    in version.properties. This is done using a script instread of
-    #    the mvn version plugin that assumes some specific parent structure
-    #
-    # The POM files are required to use the Maven staging plugin so the deploy
-    # does not deploy directly to the release repo.
+    #  1. login to the docker registry
+    #  2. run a specified shell builder
     #
     # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
-
-    name: '{project-name}-{stream}-release-version2-java-daily'
+    #     pom:       name/location of the pom.xml file relative to the workspace
+    #     maven-properties: properties passed to maven
 
+    name: '{project-name}-{stream}-{subproject}-docker-java-shell-daily'
     project-type: freestyle
     node: '{build-node}'
     disabled: '{disabled}'
-    maven-deploy-properties:
     properties:
       - infra-properties:
           build-days-to-keep: '{build-days-to-keep}'
           build-timeout: '{build-timeout}'
 
     triggers:
-      # 11 AM UTC
-      - timed: 'H 11 * * *'
+      # 12 AM UTC
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
 
     builders:
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
-      - maven-install:
-          maven-version: '{maven-version}'
-
-      - inject:
-          properties-file: version.properties
 
-      - shell: !include-raw-escape: include-update-pom-versions.sh
+      - docker-login
 
       - maven-target:
           maven-version: '{maven-version}'
-          goals: 'clean deploy site:site site:stage-deploy -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          properties:
-            - '{maven-deploy-properties}'
+          pom: '{pom}'
+          goals: '{mvn-goals}'
           settings: '{mvn-settings}'
           settings-type: cfp
           global-settings: 'global-settings'
           global-settings-type: cfp
 
+      - shell: '{script}'
+
     publishers:
       - infra-shiplogs:
           maven-version: '{maven-version}'
 
 - job-template:
-    # Job template for Java daily release jobs
+    # Job template for building & pushing docker images
     #
     # The purpose of this job template is to run:
-    # 1. inject a version.properties file and set versions
-    # 2. change version in all POM files to the release version specified
-    #     in version.properties. This is done using a script instread of
-    #     the mvn version plugin that assumes some specific parent structure
-    #
-    # The POM files are required to use the Maven staging plugin so the deploy
-    # does not deploy directly to the release repo.
+    #  1. login to the docker registry
+    #  2. inject a version.properties file and set versions
+    #  3. run a specified shell builder
     #
     # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
     #     pom:       name/location of the pom.xml file relative to the workspace
-    #     pattern:   ant file-path pattern relative to the workspace used to
-    #                trigger the job
-
-    name: '{project-name}-{stream}-{subproject}-release-version2-java-daily'
+    #     maven-properties: properties passed to maven
 
+    name: '{project-name}-{stream}-docker-java-version-shell-daily'
     project-type: freestyle
     node: '{build-node}'
     disabled: '{disabled}'
-    maven-deploy-properties:
     properties:
       - infra-properties:
           build-days-to-keep: '{build-days-to-keep}'
           build-timeout: '{build-timeout}'
 
     triggers:
-      # 11 AM UTC
-      - timed: 'H 11 * * *'
+      # 12 AM UTC
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
-          files: '{pattern}'
 
     builders:
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
-      - maven-install:
-          maven-version: '{maven-version}'
 
       - inject:
           properties-file: version.properties
+      - maven-set-release-version:
+          maven-version: '{maven-version}'
+          mvn-settings: '{mvn-settings}'
+          pom:
 
-      - shell: !include-raw-escape: include-update-pom-versions.sh
+      - docker-login
 
       - maven-target:
           maven-version: '{maven-version}'
-          pom: '{pom}'
-          goals: 'clean deploy site:site site:stage-deploy -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          properties:
-            - '{maven-deploy-properties}'
+          goals: '{mvn-goals}'
           settings: '{mvn-settings}'
           settings-type: cfp
           global-settings: 'global-settings'
           global-settings-type: cfp
 
+      - shell: '{script}'
+
     publishers:
       - infra-shiplogs:
           maven-version: '{maven-version}'
 
 - job-template:
-    # Job template for Java daily release jobs
+    # Job template for building & pushing docker images
     #
     # The purpose of this job template is to run:
-    #  1. inject a version.properties file and set versions
-    #  2. change version in all POM files to the release version specified
-    #     in version.properties. This is done using a script instread of
-    #     the mvn version plugin that assumes some specific parent structure
-    #     This version does NOT change the version within the <parent> tag
+    #  1. login to the docker registry
+    #  2. inject a version.properties file and set versions
+    #  3. run a specified shell builder
     #
-    # The POM files are required to use the Maven staging plugin so the deploy
-    # does not deploy directly to the release repo.
+    # This template supports subprojects.
     #
     # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
     #     pom:       name/location of the pom.xml file relative to the workspace
-    #     pattern:   ant file-path pattern relative to the workspace used to
-    #                trigger the job
-
-    name: '{project-name}-{stream}-{subproject}-release-version3-java-daily'
+    #     maven-properties: properties passed to maven
 
+    name: '{project-name}-{stream}-{subproject}-docker-java-version-shell-daily'
     project-type: freestyle
-    node: '{build-node}'
+    node: 'ubuntu1604-docker-8c-8g'
     disabled: '{disabled}'
-    maven-deploy-properties:
     properties:
       - infra-properties:
           build-days-to-keep: '{build-days-to-keep}'
           build-timeout: '{build-timeout}'
 
     triggers:
-      # 11 AM UTC
-      - timed: 'H 11 * * *'
+      # 12 AM UTC
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
-          files: '{pattern}'
 
     builders:
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
-      - maven-install:
-          maven-version: '{maven-version}'
 
       - inject:
           properties-file: version.properties
+      - maven-set-release-version:
+          maven-version: '{maven-version}'
+          mvn-settings: '{mvn-settings}'
+          pom: '{pom}'
 
-      - shell: !include-raw-escape: include-update-pom-versions-not-parent.sh
+      - docker-login
 
       - maven-target:
           maven-version: '{maven-version}'
           pom: '{pom}'
-          goals: 'clean deploy site:site site:stage-deploy -B
-            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
-          properties:
-            - '{maven-deploy-properties}'
+          goals: '{mvn-goals}'
           settings: '{mvn-settings}'
           settings-type: cfp
           global-settings: 'global-settings'
           global-settings-type: cfp
 
+      - shell: '{script}'
+
     publishers:
       - infra-shiplogs:
           maven-version: '{maven-version}'
 
-- job-template:
-    # Job template for Java merge jobs for SDC specific repos
+- job-template: &docker_version_java_defaults
+    # Job template for building & pushing docker images
     #
     # The purpose of this job template is to run:
-    # 1. maven clean deploy
+    #  1. login to the docker registry
+    #  2. inject a version.properties file and set versions
+    #  3. run a docker push
     #
     # Required Variables:
-    #     branch:    git branch (eg. stable/lithium or master)
-
-    name: '{project-name}-{stream}-sdc-merge-java'
+    #     pom:       name/location of the pom.xml file relative to the workspace
+    #     profile:   the docker profile defined in the pom
+    #     maven-properties: properties passed to maven
 
+    name: '{project-name}-{stream}-docker-version-java-daily'
+    id: '{project-name}-{stream}-docker-version-java-daily'
     project-type: freestyle
-    node: 'ubuntu1604-docker-8c-8g'
-    build-timeout: 120
-
+    node: '{build-node}'
+    disabled: '{disabled}'
     properties:
       - infra-properties:
           build-days-to-keep: '{build-days-to-keep}'
           artifacts: '{archive-artifacts}'
       - maven-exec:
           maven-version: '{maven-version}'
+      - maven-params:
+          mvn-params: '{mvn-params}'
 
     scm:
       - gerrit-trigger-scm:
           build-timeout: '{build-timeout}'
 
     triggers:
-      - gerrit-trigger-patch-merged:
+      # 12 AM UTC
+      - timed: '@daily'
+      - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
-          files: '**'
 
     builders:
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
 
+      - inject:
+          properties-file: version.properties
+      - maven-set-release-version:
+          maven-version: '{maven-version}'
+          mvn-settings: '{mvn-settings}'
+          pom:
+
       - docker-login
 
-      - maven-docker-push-daily-test:
+      - maven-docker-push-daily:
           maven-version: '{maven-version}'
           mvn-settings: '{mvn-settings}'
           pom: '{docker-pom}'
           # use default as mvn-profile if profile is not needed
           mvn-profile: '{mvn-profile}'
+          mvn-params: '{mvn-params}'
 
     publishers:
       - infra-shiplogs:
           maven-version: '{maven-version}'
 
+- job-template:
+    # Job template for building & pushing docker images
+    #
+    # The purpose of this job template is to run:
+    #  1. login to the docker registry
+    #  2. inject a version.properties file and set versions
+    #  3. run a docker push
+    #
+    # Required Variables:
+    #     pom:       name/location of the pom.xml file relative to the workspace
+    #     profile:   the docker profile defined in the pom
+    #     maven-properties: properties passed to maven
+
+    <<: *docker_version_java_defaults
+    name: '{project-name}-{stream}-docker-version-java-daily'
+    id: 'docker-version-java-daily'
+    node: '{build-node}'
+    wrappers:
+      - infra-wrappers-docker-build:
+          build-timeout: '{build-timeout}'
+
 - job-template:
     # Job template for building & pushing docker images for AAI specific repos
     #
     # The purpose of this job template is to run:
     #  1. login to the docker registry
-    #  2. run maven clean install goals skipping tests
-    #  3. run maven goals
+    #  2. run maven goals
+    #  3. run include-docker-push.sh
     #
     # Required Variables:
     #     pom:       name/location of the pom.xml file relative to the workspace
     #     maven-properties: properties passed to maven
 
-    name: '{project-name}-{stream}-aai-docker-java-version-daily'
+    name: '{project-name}-{stream}-aai-docker-java-daily'
     project-type: freestyle
-    node: 'ubuntu1604-docker-8c-8g'
+    node: '{build-node}'
+    docker-image-name: ''
     disabled: '{disabled}'
     properties:
       - infra-properties:
           artifacts: '{archive-artifacts}'
       - maven-exec:
           maven-version: '{maven-version}'
+      - docker-image-name:
+          docker-image-name: '{docker-image-name}'
 
     scm:
       - gerrit-trigger-scm:
 
     triggers:
       # 12 AM UTC
-      - timed: 'H 12 * * *'
+      - timed: '@daily'
       - gerrit-trigger-release-manually:
           server: '{server-name}'
           project: '{project}'
           branch: '{branch}'
 
     builders:
-
+      - lf-infra-pre-build
       - provide-maven-settings:
           global-settings-file: 'global-settings'
           settings-file: '{mvn-settings}'
       - maven-target:
           maven-version: '{maven-version}'
           pom: 'pom.xml'
-          goals: 'clean install -DskipTests -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
+          goals: 'clean install -DskipTests -B
+            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
           settings: '{mvn-settings}'
           settings-type: cfp
           global-settings: 'global-settings'
             - docker.pull.registry=nexus3.onap.org:10001
             - docker.push.registry=nexus3.onap.org:10003
 
+      - shell: !include-raw-escape: include-docker-push.sh
+
     publishers:
       - infra-shiplogs:
           maven-version: '{maven-version}'
 
+- job-template:
+    # Job template for Java merge jobs for SDC specific repos
+    #
+    # The purpose of this job template is to run:
+    # 1. maven clean deploy
+    #
+    # Required Variables:
+    #     branch:    git branch (eg. stable/lithium or master)
+
+    <<: *merge_java_defaults
+    name: '{project-name}-{stream}-sdc-merge-java'
+
+    node: '{build-node}'
+    build-timeout: 120
+
+    builders:
+      - lf-infra-pre-build
+      - provide-maven-settings:
+          global-settings-file: 'global-settings'
+          settings-file: '{mvn-settings}'
+
+      - docker-login
+
+      - maven-docker-push-daily:
+          maven-version: '{maven-version}'
+          mvn-settings: '{mvn-settings}'
+          pom: '{docker-pom}'
+          # use default as mvn-profile if profile is not needed
+          mvn-profile: '{mvn-profile}'
+          mvn-params: ''
+
+- job-template:
+    # Job template for Java merge jobs on multiple architectures
+    #
+    # The purpose of this job template is to:
+    # 1. Run parallel {project-name}-{stream}-verify-java jobs for each supported architecture
+    # 2. Build and push a docker manifest list for the images created by
+    #    the previous jobs
+
+    name: '{project-name}-multiarch-{stream}-merge-java'
+    node: '{build-node}'
+    project-type: multijob
+    disabled: '{obj:disabled}'
+    pattern: '**'
+
+    parameters:
+      - lf-infra-parameters:
+          project: '{project}'
+          stream: '{stream}'
+          branch: '{branch}'
+      - string:
+          name: DOCKER_REGISTRY
+          default: 'none'
+      - string:
+          name: DOCKERHUB_REGISTRY
+          default: 'registry-1.docker.io'
+
+    properties:
+      - throttle:
+          max-per-node: 1
+          option: 'project'
+      - build-blocker:
+          use-build-blocker: true
+          blocking-jobs:
+            - '{project-name}-.*-merge-.*'
+          blocking-level: 'NODE'
+
+    scm:
+      - gerrit-trigger-scm:
+          refspec: ''
+          choosing-strategy: 'default'
+          submodule-recursive: '{submodule-recursive}'
+
+    wrappers:
+      - infra-wrappers:
+          build-timeout: '{build-timeout}'
+
+    triggers:
+      - gerrit-trigger-patch-merged:
+          server: '{server-name}'
+          project: '{project}'
+          branch: '{branch}'
+          files: '{pattern}'
+
+    builders:
+      - multijob:
+          name: 'build docker images'
+          condition: ALWAYS
+          execution-type: PARALLEL
+          projects:
+            - name: '{project-name}-amd64-{stream}-merge-java'
+              kill-phase-on: FAILURE
+              current-parameters: true
+            - name: '{project-name}-arm64-{stream}-merge-java'
+              kill-phase-on: NEVER
+              current-parameters: true
+      - multijob:
+          name: 'publish docker manifest'
+          condition: SUCCESSFUL
+          execution-type: PARALLEL
+          projects:
+            - name: '{project-name}-docker-manifest-{stream}'
+              current-parameters: true
+              predefined-parameters: |
+                PARENT_JOB_NAME=$JOB_NAME
+                DOCKERHUB_REGISTRY=docker.io