---
- job-template:
    name: '{project-name}-{stream}-verify-csit-{functionality}'
    disabled: '{disabled}'

    project-type: freestyle
    build-node: 'ubuntu1804-docker-8c-8g'
    node: '{build-node}'
    recipients: ''
    java-version: 'openjdk11'
    python-version: python3

    properties:
      - lf-infra-properties:
          project: 'integration/csit'
          build-days-to-keep: '{build-days-to-keep}'

    parameters:
      - infra-parameters:
          project: 'integration/csit'
          branch: '{branch}'
          refspec: 'refs/heads/{branch}'
          artifacts: '{archive-artifacts}'
      - integration-test-plan:
          test-plan: 'plans/{project-name}/{functionality}'
      - integration-test-options:
          test-options: '{robot-options}'

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

    wrappers:
      - lf-infra-wrappers:
          build-timeout: '{build-timeout}'
          jenkins-ssh-credential: '{jenkins-ssh-credential}'

    triggers:
      - gerrit-trigger-patch-submitted:
          server: '{server-name}'
          project: 'integration/csit'
          branch: '{branch}'
          files: '*/{project-name}/**'

    builders:
      - lf-update-java-alternatives:
          java-version: '{java-version}'
      - integration-install-robotframework
      - inject:
          properties-file: 'env.properties'
      - integration-run-test

    publishers:
      - integration-robot:
          unstable-if: 0.0
          pass-if: 100.0
      - lf-infra-publish
      - email:
          recipients: '{recipients}'
          notify-every-unstable-build: false
          send-to-individuals: true

- job-template:
    name: '{project-name}-{stream}-csit-{functionality}'
    disabled: '{disabled}'

    project-type: freestyle
    build-node: 'ubuntu1804-docker-8c-8g'
    node: '{build-node}'
    recipients: ''
    java-version: 'openjdk11'
    python-version: python3

    properties:
      - lf-infra-properties:
          project: 'integration/csit'
          build-days-to-keep: '{build-days-to-keep}'

    parameters:
      - infra-parameters:
          project: 'integration/csit'
          branch: '{branch}'
          refspec: 'refs/heads/{branch}'
          artifacts: '{archive-artifacts}'
      - integration-test-plan:
          test-plan: 'plans/{project-name}/{functionality}'
      - integration-test-options:
          test-options: '{robot-options}'

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

    wrappers:
      - lf-infra-wrappers:
          build-timeout: '{build-timeout}'
          jenkins-ssh-credential: '{jenkins-ssh-credential}'

    triggers:
      - gerrit-trigger-patch-merged:
          server: '{server-name}'
          project: 'integration/csit'
          branch: '{branch}'
          files: '*/{project-name}/**'
      - timed: '@daily'
      - reverse:
          jobs: '{obj:trigger_jobs}'

    builders:
      - lf-infra-pre-build
      - lf-update-java-alternatives:
          java-version: '{java-version}'
      - integration-install-robotframework
      - inject:
          properties-file: 'env.properties'
      - integration-run-test

    publishers:
      - integration-robot:
          unstable-if: 0.0
          pass-if: 100.0
      - lf-infra-publish
      - email:
          recipients: '{recipients}'
          notify-every-unstable-build: false
          send-to-individuals: true

- verification_maven_job_boiler_plate: &verification_maven_job_boiler_plate
    name: verification_maven_job_boiler_plate

    ######################
    # Default parameters #
    ######################

    branch: master
    build-concurrent: false
    build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
    build-node: ubuntu1804-docker-8c-8g
    build-timeout: 60
    container-public-registry: 'nexus3.onap.org:10001'
    git-url: "$GIT_URL/$PROJECT"
    github-url: "https://github.com"
    maven-versions-plugin: false
    version-properties-file: version.properties
    mvn-central: false
    mvn-global-settings: global-settings
    mvn-goals: clean deploy
    mvn-opts: ""
    mvn-pom: ""
    mvn-version: mvn36
    stream: master
    submodule-recursive: true
    submodule-timeout: 10
    submodule-disable: false

    disabled: '{disabled}'
    archive-artifacts: >
      **/*.log
      **/hs_err_*.log
      **/target/**/feature.xml
      **/target/failsafe-reports/failsafe-summary.xml
      **/target/surefire-reports/*-output.txt

    project-type: freestyle
    node: '{build-node}'
    java-version: 'openjdk11'

    #####################
    # Job Configuration #
    #####################
    concurrent: "{build-concurrent}"
    properties:
      - lf-infra-properties:
          project: '{project}'
          build-days-to-keep: '{build-days-to-keep}'
    parameters:
      - infra-parameters:
          project: '{project}'
          branch: '{branch}'
          refspec: 'refs/heads/{branch}'
          artifacts: '{archive-artifacts}'
      - lf-infra-maven-parameters:
          mvn-opts: "{mvn-opts}"
          mvn-params: "{mvn-params}"
          mvn-version: "{mvn-version}"
      - string:
          name: ARCHIVE_ARTIFACTS
          default: "{archive-artifacts}"
          description: Artifacts to archive to the logs server.
      - integration-test-options:
          test-options: '{robot-options}'
    wrappers:
      - lf-infra-wrappers:
          build-timeout: '{build-timeout}'
          jenkins-ssh-credential: '{jenkins-ssh-credential}'
    builders:
      - lf-infra-pre-build
      - lf-jacoco-nojava-workaround
      - lf-maven-install:
          mvn-version: "{mvn-version}"
      - lf-update-java-alternatives:
          java-version: "{java-version}"
      - lf-infra-docker-login:
          global-settings-file: "{mvn-global-settings}"
          settings-file: "{mvn-settings}"
      # must provide maven settings AFTER docker-login due to its cleanup
      - lf-provide-maven-settings:
          global-settings-file: "{mvn-global-settings}"
          settings-file: "{mvn-settings}"
      - lf-maven-versions-plugin:
          maven-versions-plugin: "{maven-versions-plugin}"
          version-properties-file: "{version-properties-file}"
          mvn-version: "{mvn-version}"
          mvn-pom: "{mvn-pom}"
          mvn-settings: "{mvn-settings}"
      - inject:
          properties-content: |
            CONTAINER_PULL_REGISTRY={container-public-registry}
      - lf-maven-build:
          mvn-goals: "{mvn-goals}"
      - integration-install-robotframework
      - inject:
          properties-file: 'env.properties'
      - integration-run-project-test
      - lf-provide-maven-settings-cleanup
    publishers:
      - integration-project-robot:
          unstable-if: 0.0
          pass-if: 100.0
      - lf-infra-publish
      - email:
          recipients: '{recipients}'
          notify-every-unstable-build: false
          send-to-individuals: true

- job-template:
    # Job template for unified review verification jobs in
    # project-specific CSIT flow for projects built with maven
    #
    # The purpose of this job template is to:
    #  1. build local snapshot docker images with maven
    #  2. run CSIT job with the local images
    #  3. give a verify vote to the triggering review
    #

    name: '{project-name}-review-verification-maven-{stream}'

    <<: *verification_maven_job_boiler_plate

    scm:
      - gerrit-trigger-scm:
          refspec: '$GERRIT_REFSPEC'
          choosing-strategy: 'gerrit'
          submodule-recursive: '{submodule-recursive}'
    triggers:
      - gerrit-trigger-patch-submitted:
          server: '{server-name}'
          project: '{project}'
          branch: '{branch}'
          files: '**'

- job-template:
    # Job template for unified merge verification jobs in
    # project-specific CSIT flow for projects built with maven
    #
    # The purpose of this job template is to:
    #  1. build local snapshot docker images from master with maven
    #  2. run CSIT job with the local images
    #

    name: '{project-name}-merge-verification-maven-{stream}'

    <<: *verification_maven_job_boiler_plate

    scm:
      - gerrit-trigger-scm:
          refspec: ''
          choosing-strategy: 'default'
          submodule-recursive: '{submodule-recursive}'
    triggers:
      - gerrit-trigger-patch-merged:
          server: '{server-name}'
          project: '{project}'
          branch: '{branch}'
          files: '**'