---
- job-template: &verify_java_defaults
    # Job template for Java verify jobs
    #
    # The purpose of this job template is to run:
    # 1. maven clean install
    #
    # Required Variables:
    #     branch:    git branch (eg. stable/lithium or master)

    name: '{project-name}-{stream}-verify-java'

    project-type: freestyle
    concurrent: true
    node: '{build-node}'
    pattern: '**'
    pom:

    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: '{obj:pattern}'

    builders:
      - lf-infra-pre-build
      - provide-maven-settings:
          global-settings-file: 'global-settings'
          settings-file: '{mvn-settings}'
      - 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}'
          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 running checkstyle at the end
    # When checkstyle will be fully incorporated, it is meant to replace
    #  '{project-name}-{stream}-verify-java-checkstyle'
    #
    # The purpose of this job template is to run:
    # 1. maven clean install
    #
    # This job publishes checkstyle results.
    #
    # Required Variables:
    #     branch:    git branch (eg. stable/lithium or master)

    <<: *verify_java_defaults
    name: '{project-name}-{stream}-verify-java-checkstyle'
    publishers:
      - infra-shiplogs:
          maven-version: '{maven-version}'
      - checkstyle-result

- job-template:
    # Job template for Java verify jobs with POM not at the root
    #
    # The purpose of this job template is to run:
    # 1. maven clean install
    #
    # 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

    <<: *verify_java_defaults
    name: '{project-name}-{stream}-{subproject}-verify-java'

- job-template:
    # Job template for Java daily release jobs
    #
    # The purpose of this job template is to run:
    # 1. maven clean deploy with Sonar scans
    #
    # Required Variables:
    #     branch:    git branch (eg. stable/lithium or master)

    name: '{project-name}-{stream}-release-java-daily'

    project-type: freestyle
    node: '{build-node}'
    disabled: '{disabled}'
    maven-deploy-properties:
    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:
      # 11 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-target:
          maven-version: '{maven-version}'
          goals: 'clean deploy -B
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
          properties:
            - '{maven-deploy-properties}'
          java-opts:
            - '-Xmx4096m -XX:MaxPermSize=512m'
          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 running checkstyle at the end
    # When checkstyle will be fully incorporated, it is meant to replace
    #  '{project-name}-{stream}-release-java-daily'
    #
    # The purpose of this job template is to run:
    # 1. maven clean deploy with Sonar scans
    #
    # This job publishes checkstyle results.
    # This job uses a conditional regex match step to set versions.
    #
    # Required Variables:
    #     branch:    git branch (eg. stable/lithium or master)

    name: '{project-name}-{stream}-release-java-daily-checkstyle'
    project-type: freestyle
    node: '{build-node}'
    disabled: '{disabled}'
    maven-deploy-properties:
    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:
      # 11 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}'
      - 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:
      - maven-target:
          maven-version: '{maven-version}'
          goals: 'clean deploy -B
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
          properties: '{obj:mvn_properties}'
          settings: '{mvn-settings}'
          settings-type: cfp
          global-settings: 'global-settings'
          global-settings-type: cfp
    publishers:
      - infra-shiplogs:
          maven-version: '{maven-version}'
      - checkstyle-result-daily

- job-template:
    # Job template for Java daily release jobs
    #
    # The purpose of this job template is to run:
    # 1. maven set versions
    # 2. maven clean deploy with Sonar scans
    #
    # Required Variables:
    #     branch:    git branch (eg. stable/lithium or master)

    name: '{project-name}-{stream}-release-version-java-daily'

    project-type: freestyle
    disabled: '{disabled}'
    node: '{build-node}'
    maven-deploy-properties:
    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:
      # 11 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}'

      - inject:
          properties-file: version.properties
      - maven-set-release-version:
          maven-version: '{maven-version}'
          mvn-settings: '{mvn-settings}'
          pom:

      - maven-target:
          maven-version: '{maven-version}'
          goals: 'clean deploy -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 daily release jobs
    #
    # The purpose of this job template is to run:
    # 1. maven set versions
    # 2. maven clean deploy -P {mvn-profile} with Sonar scans
    #
    # Required Variables:
    #     branch:    git branch (eg. stable/lithium or master)

    name: '{project-name}-{stream}-release-version-profile-java-daily'

    project-type: freestyle
    node: '{build-node}'
    disabled: '{disabled}'
    maven-deploy-properties:
    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:
      # 11 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}'

      - inject:
          properties-file: version.properties
      - maven-set-release-version:
          maven-version: '{maven-version}'
          mvn-settings: '{mvn-settings}'
          pom:

      - maven-target:
          maven-version: '{maven-version}'
          goals: 'clean deploy -P {mvn-profile} -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 daily release jobs with POM not at the root
    #
    # The purpose of this job template is to run:
    # 1. maven clean deploy with Sonar scans
    #
    # 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

    name: '{project-name}-{stream}-{subproject}-release-java-daily'

    project-type: freestyle
    node: '{build-node}'
    disabled: '{disabled}'
    maven-deploy-properties:
    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:
      # 11 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-target:
          maven-version: '{maven-version}'
          pom: '{pom}'
          goals: 'clean deploy -B
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
          properties:
            - '{maven-deploy-properties}'
          java-opts:
            - '-Xmx4096m -XX:MaxPermSize=512m'
          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 with POM not at the root
    #
    # The purpose of this job template is to run:
    # 1. maven set versions
    # 2. maven clean deploy with Sonar scans
    #
    # 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

    name: '{project-name}-{stream}-{subproject}-release-version-java-daily'

    project-type: freestyle
    node: '{build-node}'
    disabled: '{disabled}'
    version-properties: 'version.properties'
    maven-deploy-properties:
    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:
      # 11 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}'

      - inject:
          properties-file: '{version-properties}'
      - maven-set-release-version:
          maven-version: '{maven-version}'
          mvn-settings: '{mvn-settings}'
          pom: '{pom}'

      - maven-target:
          maven-version: '{maven-version}'
          pom: '{pom}'
          goals: 'clean deploy -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: &merge_java_defaults
    # 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}'
    pattern: '**'
    pom:
    mvn_properties: []
    mvn-params: ''

    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:
      - lf-infra-pre-build
      - provide-maven-settings:
          global-settings-file: 'global-settings'
          settings-file: '{mvn-settings}'
      - maven-target:
          maven-version: '{maven-version}'
          pom: '{obj:pom}'
          goals: 'clean deploy -B {mvn-params}
            -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 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

    <<: *merge_java_defaults
    name: '{project-name}-{stream}-merge-properties-java'

- 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)

    <<: *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}'

      - 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

- 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

    <<: *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}'
    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: '@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-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)

    <<: *docker_java_defaults
    name: '{project-name}-{stream}-docker-java-daily'
    id: docker-java-daily
    node: '{build-node}'
    wrappers:
      - infra-wrappers-docker-build:
          build-timeout: '{build-timeout}'

- 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: '{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:
          build-timeout: '{build-timeout}'
    triggers:
      # 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}'
      - 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}'
          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: '{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}'

    scm:
      - gerrit-trigger-scm:
          refspec: ''
          choosing-strategy: 'default'
          submodule-recursive: '{submodule-recursive}'

    wrappers:
      - infra-wrappers:
          build-timeout: '{build-timeout}'

    triggers:
      # 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}'

      - 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. 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}-docker-java-shell-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}'

    scm:
      - gerrit-trigger-scm:
          refspec: ''
          choosing-strategy: 'default'
          submodule-recursive: '{submodule-recursive}'

    wrappers:
      - infra-wrappers:
          build-timeout: '{build-timeout}'

    triggers:
      # 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}'

      - docker-login

      - 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

      - 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: '{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}'

    scm:
      - gerrit-trigger-scm:
          refspec: ''
          choosing-strategy: 'default'
          submodule-recursive: '{submodule-recursive}'

    wrappers:
      - infra-wrappers:
          build-timeout: '{build-timeout}'

    triggers:
      # 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}'

      - inject:
          properties-file: version.properties
      - maven-set-release-version:
          maven-version: '{maven-version}'
          mvn-settings: '{mvn-settings}'
          pom:

      - 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: '@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-set-release-version:
          maven-version: '{maven-version}'
          mvn-settings: '{mvn-settings}'
          pom: '{pom}'

      - docker-login

      - 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

      - shell: '{script}'

    publishers:
      - infra-shiplogs:
          maven-version: '{maven-version}'

- job-template: &docker_version_java_defaults
    # 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

    name: '{project-name}-{stream}-docker-version-java-daily'
    id: '{project-name}-{stream}-docker-version-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:
          build-timeout: '{build-timeout}'

    triggers:
      # 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}'

      - 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}'
          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 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-daily'
    project-type: freestyle
    node: '{build-node}'
    docker-image-name: ''
    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}'
      - docker-image-name:
          docker-image-name: '{docker-image-name}'

    scm:
      - gerrit-trigger-scm:
          refspec: ''
          choosing-strategy: 'default'
          submodule-recursive: '{submodule-recursive}'

    wrappers:
      - infra-wrappers:
          build-timeout: '{build-timeout}'

    triggers:
      # 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}'

      - 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:
          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

    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: ''