---
# maven jobs for Java projects

- job-template:
    id: maven-test
    name: 'verify_{project}_maven-test{name-extension}'
    sandbox: true
    description: |
      <!-- Managed by Jenkins Job Builder -->
      Created by {id} job-template from ci-management/jjb/maven.yaml

    node: 'ubuntu18.04-basebuild-1c-2g'
    project-type: freestyle

    parameters:
      - string:
          name: jdkDistro
          default: '{jdk-distribution}'
          description: >
            'Distribution of the JDK to use with update-java-alternatives'

    triggers:
      - cord-infra-gerrit-trigger-patchset:
          gerrit-server-name: '{gerrit-server-name}'
          project-regexp: '{project}'
          branch-regexp: '{branch-regexp}'
          file-include-regexp: '{all-files-regexp}'
          dependency-jobs: '{dependency-jobs}'

    properties:
      - cord-infra-properties:
          build-days-to-keep: '{build-days-to-keep}'
          artifact-num-to-keep: '{artifact-num-to-keep}'

    scm:
      - lf-infra-gerrit-scm:
          git-url: '$GIT_URL/$GERRIT_PROJECT'
          refspec: '$GERRIT_REFSPEC'
          branch: '$GERRIT_BRANCH'
          submodule-disable: '{submodule-disable}'
          submodule-recursive: 'false'
          submodule-timeout: '{submodule-timeout}'
          choosing-strategy: gerrit
          jenkins-ssh-credential: '{jenkins-ssh-credential}'

    builders:
      # Set JDK version
      - shell: |
          #!/usr/bin/env bash
          set -eu -o pipefail
          echo "Setting JDK Distro to: $jdkDistro"
          sudo update-java-alternatives -s $jdkDistro
          echo "Java Version:"
          java -version

      # run tests and install
      - maven-target:
          pom: pom.xml
          settings: 'cord-apps-maven-settings'
          settings-type: cfp
          goals: '-Pci-verify clean test install spotbugs:check'
          maven-version: '{maven-version}'

    publishers:
      - junit:
          results: "**/TEST-*.xml"
          allow-empty-results: '{junit-allow-empty-results}'
      - cobertura:
          report-file: "**/*coverage.xml"
          targets:
            - files:
                healthy: 80
                unhealthy: 0
                failing: 0
            - method:
                healthy: 50
                unhealthy: 0
                failing: 0

- job-template:
    id: maven-publish
    name: 'maven-publish{name-extension}_{project}'
    sandbox: true
    description: |
      <!-- Managed by Jenkins Job Builder -->
      Created by {id} job-template from ci-management/jjb/maven.yaml

    node: 'ubuntu18.04-basebuild-1c-2g'
    project-type: freestyle

    parameters:
      - string:
          name: jdkDistro
          default: '{jdk-distribution}'
          description: >
            'Distribution of the JDK to use with update-java-alternatives'

    triggers:
      - cord-infra-gerrit-trigger-merge:
          gerrit-server-name: '{gerrit-server-name}'
          project-regexp: '{project}'
          branch-regexp: '{branch-regexp}'
          file-include-regexp: '{all-files-regexp}'
          dependency-jobs: '{dependency-jobs}'

    properties:
      - cord-infra-properties:
          build-days-to-keep: '{build-days-to-keep}'
          artifact-num-to-keep: '{artifact-num-to-keep}'

    scm:
      - lf-infra-gerrit-scm:
          git-url: '$GIT_URL/$GERRIT_PROJECT'
          refspec: '$GERRIT_REFSPEC'
          branch: '$GERRIT_BRANCH'
          submodule-disable: '{submodule-disable}'
          submodule-recursive: 'false'
          submodule-timeout: '{submodule-timeout}'
          choosing-strategy: gerrit
          jenkins-ssh-credential: '{jenkins-ssh-credential}'

    wrappers:
      - credentials-binding:
          - file:
              credential-id: 'gpg-creds-maven'
              variable: 'GNUPG'

    builders:
      # Set JDK version
      - shell: |
          #!/usr/bin/env bash
          set -eu -o pipefail
          echo "Setting JDK Distro to: $jdkDistro"
          sudo update-java-alternatives -s $jdkDistro
          echo "Java Version:"
          java -version
          echo "Unpacking GPG Keys"
          tar -xvf $GNUPG -C ~

      - maven-target:
          pom: pom.xml
          settings: 'cord-apps-maven-settings'
          settings-type: cfp
          goals: '-Prelease clean deploy'
          maven-version: '{maven-version}'
