---
- project:
    name: storperf-verify

    project: 'storperf'

    # -------------------------------
    # branches
    # -------------------------------
    stream:
      - master:
          branch: '{stream}'
          gs-pathname: ''
          disabled: false
          docker-tag: 'latest'
      - fraser: &fraser
          branch: 'stable/{stream}'
          gs-pathname: '/{stream}'
          disabled: false
          docker-tag: 'stable'
    # -------------------------------
    # patch verification phases
    # -------------------------------
    phase:
      - 'unit-test':
          slave-label: 'opnfv-build-ubuntu'
      - 'build-x86_64':
          slave-label: 'opnfv-build-ubuntu'
      - 'build-aarch64':
          slave-label: 'opnfv-build-ubuntu-arm'
    # -------------------------------
    # jobs
    # -------------------------------
    jobs:
      - 'storperf-verify-{stream}'
      - 'storperf-verify-{phase}-{stream}'
# -------------------------------
# job templates
# -------------------------------
- job-template:
    name: 'storperf-verify-{stream}'

    disabled: '{obj:disabled}'

    project-type: 'multijob'

    parameters:
      - project-parameter:
          project: '{project}'
          branch: '{branch}'
      - 'opnfv-build-defaults'

    scm:
      - git-scm-gerrit

    triggers:
      - gerrit:
          server-name: 'gerrit.opnfv.org'
          trigger-on:
            - patchset-created-event:
                exclude-drafts: 'false'
                exclude-trivial-rebase: 'false'
                exclude-no-code-change: 'false'
            - draft-published-event
            - comment-added-contains-event:
                comment-contains-value: 'recheck'
            - comment-added-contains-event:
                comment-contains-value: 'reverify'
          projects:
            - project-compare-type: 'ANT'
              project-pattern: '{project}'
              branches:
                - branch-compare-type: 'ANT'
                  branch-pattern: '**/{branch}'

    builders:
      - shell: |
          #!/bin/bash

          # we do nothing here as the main stuff will be done
          # in phase jobs
          echo "Triggering phase jobs!"
      - multijob:
          name: 'storperf-build-and-unittest'
          execution-type: PARALLEL
          projects:
            - name: 'storperf-verify-unit-test-{stream}'
              current-parameters: false
              predefined-parameters: |
                GERRIT_BRANCH=$GERRIT_BRANCH
                GERRIT_REFSPEC=$GERRIT_REFSPEC
                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
              git-revision: true
              node-parameters: false
              kill-phase-on: FAILURE
              abort-all-job: false
            - name: 'storperf-verify-build-x86_64-{stream}'
              current-parameters: false
              predefined-parameters: |
                GERRIT_BRANCH=$GERRIT_BRANCH
                GERRIT_REFSPEC=$GERRIT_REFSPEC
                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                ARCH=x86_64
              git-revision: true
              node-parameters: false
              kill-phase-on: FAILURE
              abort-all-job: false
            - name: 'storperf-verify-build-aarch64-{stream}'
              current-parameters: false
              predefined-parameters: |
                GERRIT_BRANCH=$GERRIT_BRANCH
                GERRIT_REFSPEC=$GERRIT_REFSPEC
                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                ARCH=aarch64
              git-revision: true
              node-parameters: false
              kill-phase-on: FAILURE
              abort-all-job: false

- job-template:
    name: 'storperf-verify-{phase}-{stream}'

    disabled: '{obj:disabled}'

    wrappers:
      - ssh-agent-wrapper
      - build-timeout:
          timeout: 60

    parameters:
      - project-parameter:
          project: '{project}'
          branch: '{branch}'
      - '{slave-label}-defaults'

    scm:
      - git-scm-gerrit

    builders:
      - 'storperf-verify-{phase}-builders-macro'

    publishers:
      - 'storperf-verify-{phase}-publishers-macro'
# -------------------------------
# builder macros
# -------------------------------
- builder:
    name: 'storperf-verify-unit-test-builders-macro'
    builders:
      - shell: |
          $WORKSPACE/ci/verify.sh

- builder:
    name: 'storperf-verify-build-x86_64-builders-macro'
    builders:
      - shell: |
          $WORKSPACE/ci/verify-build.sh

- builder:
    name: 'storperf-verify-build-aarch64-builders-macro'
    builders:
      - shell: |
          $WORKSPACE/ci/verify-build.sh
# -------------------------------
# publisher macros
# -------------------------------
- publisher:
    name: 'storperf-verify-unit-test-publishers-macro'
    publishers:
      - junit:
          results: nosetests.xml
      - cobertura:
          report-file: "coverage.xml"
          only-stable: "true"
          health-auto-update: "true"
          stability-auto-update: "true"
          zoom-coverage-chart: "true"
          targets:
            - files:
                healthy: 60
                unhealthy: 50
                failing: 40
            - method:
                healthy: 60
                unhealthy: 50
                failing: 40
      - email-jenkins-admins-on-failure

- publisher:
    name: 'storperf-verify-build-x86_64-publishers-macro'
    publishers:
      - email-jenkins-admins-on-failure

- publisher:
    name: 'storperf-verify-build-aarch64-publishers-macro'
    publishers:
      - email-jenkins-admins-on-failure