---
- project:
    name: ci-platform-AGL
    machine:
      - porter-nogfx
      - raspberrypi3
      - intel-corei7-64
      - dra7xx-evm
      - m3ulcb-nogfx
      - qemux86-64
    project:
      - meta-agl
      - meta-agl-demo
      - meta-agl-devel
      - meta-agl-extra
      - AGL-repo
      - meta-renesas
      - meta-renesas-rcar-gen3
    jobs:
      - ci-platform-{project}-verify
      # - ci-platform-{project}-verify-CIB-start             #unused
      - ci-platform-{project}-verify-CIB-{machine}
      - ci-platform-{project}-verify-CIB-finish-success
      - ci-platform-{project}-verify-failure
      # - ci-platform-{project}-verify-CIBT-start            #unused
      - ci-platform-{project}-verify-CIBT-{machine}
      - ci-platform-{project}-verify-CIBT-finish-success
      - ci-platform-{project}-remove-artifacts


################################################################################################################################################################
################################################################################################################################################################

################################################################################
################################################################################
# -verify  = trigger from gerrit and control job, multijob order
################################################################################
- job-template:
    name: 'ci-platform-{project}-verify'
    project-type: multijob
    concurrent: true
    node: control-slave
    parameters:
      - string:
          name: GERRIT_PROJECT
          default: 'AGL/{project}'
          description: "Project to build"
      - string:
          name: GERRIT_BRANCH
          default: master
          description: "branch to build"
      - string:
          name: GERRIT_REFSPEC
          default: refs/heads/master
          description: "refspec to build"
      - string:
          name: GERRIT_CHANGE_NUMBER
          default: "8313"
          description: "change # to build"
      - string:
          name: GERRIT_PATCHSET_NUMBER
          default: "2"
          description: "patchset # to build"
    build-discarder:
      days-to-keep: 30
      artifact-days-to-keep: -1
      artifact-num-to-keep: 5
    triggers:
      - gerrit-trigger-patch-submitted-manual-verified:
          name: 'AGL/{project}'
          branch: '**/**/**'
    wrappers:
      - agl-infra-wrappers:
          build-timeout: '{build-timeout}'
    builders:
      - shell: |
          set
          export TRIGGERURL=$(echo ${{BUILD_URL}} | sed -e 's,-CIB-start.*,,')
          echo \$TRIGGERURL
          ssh -p 29418 agl-jobbuilder@gerrit.automotivelinux.org gerrit review ${{GERRIT_CHANGE_NUMBER}},${{GERRIT_PATCHSET_NUMBER}} --verified=0 -n NONE --message="CI-cycle\ started.\ URL:\ ${{BUILD_URL}}" || true
          # - multijob:
          #     name: CIB-{project}-start
          #     condition: SUCCESSFUL
          #     projects:
          #       - name: 'ci-platform-{project}-verify-CIB-start'
          #         current-parameters: true
          #         abort-all-job: true
          #         kill-phase-on: FAILURE
      - multijob:
          name: CIB-{project}
          condition: SUCCESSFUL
          projects:
            - name: 'ci-platform-{project}-verify-CIB-porter-nogfx'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
            - name: 'ci-platform-{project}-verify-CIB-intel-corei7-64'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
            - name: 'ci-platform-{project}-verify-CIB-raspberrypi3'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
            - name: 'ci-platform-{project}-verify-CIB-dra7xx-evm'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
            - name: 'ci-platform-{project}-verify-CIB-qemux86-64'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
            - name: 'ci-platform-{project}-verify-CIB-m3ulcb-nogfx'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
      - multijob:
          name: CIB-{project}-finish-success
          condition: SUCCESSFUL
          projects:
            - name: 'ci-platform-{project}-verify-CIB-finish-success'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
              # - multijob:
              #     name: 'CIBT-{project}-start'
              #     condition: SUCCESSFUL
              #     projects:
              #       - name: 'ci-platform-{project}-verify-CIBT-start'
              #         current-parameters: true
              #         abort-all-job: true
              #         kill-phase-on: FAILURE
      - multijob:
          name: CIBT-{project}
          condition: SUCCESSFUL
          projects:
            - name: 'ci-platform-{project}-verify-CIBT-porter-nogfx'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
            - name: 'ci-platform-{project}-verify-CIBT-intel-corei7-64'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
            - name: 'ci-platform-{project}-verify-CIBT-raspberrypi3'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
            - name: 'ci-platform-{project}-verify-CIBT-dra7xx-evm'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
            - name: 'ci-platform-{project}-verify-CIBT-qemux86-64'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
            - name: 'ci-platform-{project}-verify-CIBT-m3ulcb-nogfx'
              current-parameters: true
              #abort-all-job: true
              kill-phase-on: FAILURE
      - multijob:
          name: 'CIBT-{project}-finish-success'
          condition: SUCCESSFUL
          projects:
            - name: 'ci-platform-{project}-verify-CIBT-finish-success'
              current-parameters: true
              abort-all-job: true
              kill-phase-on: FAILURE
#    publishers:
#      - trigger-parameterized-builds:
#        - project:
#          - ci-platform-{project}-verify-failure
#          condition: FAILED
#          current-parameters: true


################################################################################################################################################################
################################################################################################################################################################

################################################################################
################################################################################
# -verify-CIB-start  = start message (message back to gerrit)
################################################################################
- job-template:
    name: 'ci-platform-{project}-verify-CIB-start'
    project-type: freestyle
    concurrent: true
    node: control-slave
    parameters:
      - string:
          name: GERRIT_PROJECT
          default: 'AGL/{project}'
          description: "Project to build"
      - string:
          name: GERRIT_BRANCH
          default: master
          description: "branch to build"
      - string:
          name: GERRIT_REFSPEC
          default: refs/heads/master
          description: "refspec to build"
      - string:
          name: GERRIT_CHANGE_NUMBER
          default: "8313"
          description: "change # to build"
      - string:
          name: GERRIT_PATCHSET_NUMBER
          default: "2"
          description: "patchset # to build"
    build-discarder:
      days-to-keep: 30
      artifact-days-to-keep: -1
      artifact-num-to-keep: 5
    wrappers:
      - agl-infra-wrappers:
          build-timeout: '{build-timeout}'
      - openstack:
          single-use: false
    builders:
      - shell: |
          #set
          export TRIGGERURL=$(echo ${{BUILD_URL}} | sed -e 's,-CIB-start.*,,')
          # ssh -p 29418 agl-jobbuilder@gerrit.automotivelinux.org gerrit review ${{GERRIT_CHANGE_NUMBER}},${{GERRIT_PATCHSET_NUMBER}} --verified=0 --label ci-image-build=0 --label ci-image-boot-test=0 -n NONE --message="CI-Image-Build\ started.\ URL:\ ${{BUILD_URL}}" || true
          ssh -p 29418 agl-jobbuilder@gerrit.automotivelinux.org gerrit review ${{GERRIT_CHANGE_NUMBER}},${{GERRIT_PATCHSET_NUMBER}} --verified=0 -n NONE --message="CI-Image-Build\ started.\ URL:\ \$TRIGGERURL" || true


################################################################################
################################################################################
# -verify-CIB-{machine}  = build for machine
################################################################################
- job-template:
    name: 'ci-platform-{project}-verify-CIB-{machine}'
    project-type: freestyle
    concurrent: true
    node: agl-test-slave
    parameters:
      - string:
          name: GERRIT_PROJECT
          default: 'AGL/{project}'
          description: "Project to build"
      - string:
          name: GERRIT_BRANCH
          default: master
          description: "branch to build"
      - string:
          name: GERRIT_REFSPEC
          default: refs/heads/master
          description: "refspec to build"
      - string:
          name: GERRIT_CHANGE_NUMBER
          default: "8313"
          description: "change # to build"
      - string:
          name: GERRIT_PATCHSET_NUMBER
          default: "2"
          description: "patchset # to build"
      - string:
          name: MACHINE
          default: '{machine}'
          description: "Machine to build"
    build-discarder:
      days-to-keep: 30
      artifact-days-to-keep: -1
      artifact-num-to-keep: 5
    wrappers:
      - agl-infra-wrappers:
          build-timeout: '{build-timeout}'
      - openstack:
          single-use: true
    builders:
      - shell:
          !include-raw-escape:
          - ../common/include-agl-header.sh
          - ../common/include-agl-repo.sh
          - ../common/include-agl-select.sh
          - ../common/include-agl-source-aglsetup.sh
          - ../common/include-agl-auto-conf.sh
          - ../common/include-agl-limit-parallelism.sh
          - ../common/include-agl-local-conf-DISTROFEATURES-AGLCI.sh
          - ../common/include-agl-cat-auto-conf.sh
          - ../common/include-agl-bitbake-image.sh
          - ../common/include-agl-run-test-prepare.sh
          - ../common/include-agl-run-test-rsync-changeid.sh
    publishers:
      - naginator:
          rerun-unstable-builds: true
          progressive-delay-increment: 5
          progressive-delay-maximum: 15
          max-failed-builds: 2
          #regular-expression: "Unexpected termination of the channel"


################################################################################
################################################################################
# -verify-CIB-finish-success = build succeeded, message to gerrit
################################################################################
- job-template:
    name: 'ci-platform-{project}-verify-CIB-finish-success'
    project-type: freestyle
    concurrent: true
    node: control-slave
    parameters:
      - string:
          name: GERRIT_PROJECT
          default: 'AGL/{project}'
          description: "Project to build"
      - string:
          name: GERRIT_BRANCH
          default: master
          description: "branch to build"
      - string:
          name: GERRIT_REFSPEC
          default: refs/heads/master
          description: "refspec to build"
      - string:
          name: GERRIT_CHANGE_NUMBER
          default: "8313"
          description: "change # to build"
      - string:
          name: GERRIT_PATCHSET_NUMBER
          default: "2"
          description: "patchset # to build"
    build-discarder:
      days-to-keep: 30
      artifact-days-to-keep: -1
      artifact-num-to-keep: 5
    wrappers:
      - agl-infra-wrappers:
          build-timeout: '{build-timeout}'
    builders:
      - shell: |
          set
          echo "#### CIB +1 #### Verified +1 ####"
          ssh -p 29418 agl-jobbuilder@gerrit.automotivelinux.org gerrit review ${{GERRIT_CHANGE_NUMBER}},${{GERRIT_PATCHSET_NUMBER}} --verified +1 --label ci-image-build=+1 -n NONE --message="CI-Image-Build\ finished,\ CIB+1,\ Verified+1" || true


################################################################################
################################################################################
# -verify-failure = CI check failed, -1 message to gerrit
################################################################################
- job-template:
    name: 'ci-platform-{project}-verify-failure'
    project-type: freestyle
    concurrent: true
    node: control-slave
    parameters:
      - string:
          name: GERRIT_PROJECT
          default: 'AGL/{project}'
          description: "Project to build"
      - string:
          name: GERRIT_BRANCH
          default: master
          description: "branch to build"
      - string:
          name: GERRIT_REFSPEC
          default: refs/heads/master
          description: "refspec to build"
      - string:
          name: GERRIT_CHANGE_NUMBER
          default: "8313"
          description: "change # to build"
      - string:
          name: GERRIT_PATCHSET_NUMBER
          default: "2"
          description: "patchset # to build"
    build-discarder:
      days-to-keep: 30
      artifact-days-to-keep: -1
      artifact-num-to-keep: 5
    wrappers:
      - agl-infra-wrappers:
          build-timeout: '{build-timeout}'
    builders:
      - shell: |
          set
          echo "#### Verified -1 ####"
          #ssh -p 29418 agl-jobbuilder@gerrit.automotivelinux.org gerrit review ${{GERRIT_CHANGE_NUMBER}},${{GERRIT_PATCHSET_NUMBER}} --verified -1 -n NONE --message="CI-cycle\ failed.\ URL:\ ${{BUILD_URL}}" || true
          ssh -p 29418 agl-jobbuilder@gerrit.automotivelinux.org gerrit review ${{GERRIT_CHANGE_NUMBER}},${{GERRIT_PATCHSET_NUMBER}} -n NONE --message="CI-cycle\ failed.\ URL:\ ${{BUILD_URL}}" || true


################################################################################################################################################################
################################################################################################################################################################

################################################################################
################################################################################
# -verify-CIBT-start = CI BOOT TEST start
################################################################################
- job-template:
    name: 'ci-platform-{project}-verify-CIBT-start'
    project-type: freestyle
    concurrent: true
    node: control-slave
    parameters:
      - string:
          name: GERRIT_PROJECT
          default: 'AGL/{project}'
          description: "Project to build"
      - string:
          name: GERRIT_BRANCH
          default: master
          description: "branch to build"
      - string:
          name: GERRIT_REFSPEC
          default: refs/heads/master
          description: "refspec to build"
      - string:
          name: GERRIT_CHANGE_NUMBER
          default: "8313"
          description: "change # to build"
      - string:
          name: GERRIT_PATCHSET_NUMBER
          default: "2"
          description: "patchset # to build"
    build-discarder:
      days-to-keep: 30
      artifact-days-to-keep: -1
      artifact-num-to-keep: 5
    wrappers:
      - agl-infra-wrappers:
          build-timeout: '{build-timeout}'
      - openstack:
          single-use: false
    builders:
      - shell: |
          echo "CIBT Started"
          # set
          # ssh -p 29418 agl-jobbuilder@gerrit.automotivelinux.org gerrit review ${{GERRIT_CHANGE_NUMBER}},${{GERRIT_PATCHSET_NUMBER}} --label ci-image-boot-test=0 -n NONE --message='CI-Image-Boot-Test\ started' || true


################################################################################
################################################################################
# -verify-CIBT-{machine} = CI BOOT TEST on machine
################################################################################
- job-template:
    name: 'ci-platform-{project}-verify-CIBT-{machine}'
    project-type: freestyle
    concurrent: true
    node: hwtest-slave
    parameters:
      - string:
          name: GERRIT_PROJECT
          default: 'AGL/{project}'
          description: "Project to build"
      - string:
          name: GERRIT_BRANCH
          default: master
          description: "branch to build"
      - string:
          name: GERRIT_REFSPEC
          default: refs/heads/master
          description: "refspec to build"
      - string:
          name: GERRIT_CHANGE_NUMBER
          default: "8313"
          description: "change # to build"
      - string:
          name: GERRIT_PATCHSET_NUMBER
          default: "2"
          description: "patchset # to build"
      - string:
          name: MACHINE
          default: '{machine}'
          description: "Machine to build"
    build-discarder:
      days-to-keep: 30
      artifact-days-to-keep: -1
      artifact-num-to-keep: 5
    wrappers:
      - agl-infra-wrappers:
          build-timeout: '{build-timeout}'
      - openstack:
          single-use: false
      - credentials-binding:
          - username-password-separated:
              credential-id: agl_main_lava_instance
              username: AGLLAVAUSER
              password: AGLLAVATOKEN
          - username-password-separated:
              credential-id: agl_main_lava_instance
              username: LAB_AGL_USER
              password: LAB_AGL_TOKEN
          - username-password-separated:
              credential-id: lab_baylibre_lava_instance
              username: LAB_BAYLIBRE_USER
              password: LAB_BAYLIBRE_TOKEN
          - username-password-separated:
              credential-id: lab_baylibre_seattle_lava_instance
              username: LAB_BAYLIBRE_SEATTLE_USER
              password: LAB_BAYLIBRE_SEATTLE_TOKEN
    builders:
      - shell:
          !include-raw-escape:
          - ../common/include-agl-header.sh
          - ../common/include-agl-repo.sh
          - ../common/include-agl-select.sh
          - ../common/include-agl-run-test-prepare.sh
          - ../common/include-agl-lava-labs-prepare.sh
          - ../common/include-agl-run-test-short.sh
          - ../common/include-agl-lava-jobs-submit.sh

    publishers:
      - naginator:
          max-failed-builds: 2
          rerun-unstable-builds: true
          progressive-delay-increment: 2
          progressive-delay-maximum: 6
          regular-expression: "/.*Timed out waiting for device dev-tty.*/"

################################################################################
################################################################################
# -verify-CIBT-finish-success = CI BOOT TEST succeeded, CIBT+1 to gerrit
################################################################################
- job-template:
    name: 'ci-platform-{project}-verify-CIBT-finish-success'
    project-type: freestyle
    concurrent: true
    node: control-slave
    parameters:
      - string:
          name: GERRIT_PROJECT
          default: 'AGL/{project}'
          description: "Project to build"
      - string:
          name: GERRIT_BRANCH
          default: master
          description: "branch to build"
      - string:
          name: GERRIT_REFSPEC
          default: refs/heads/master
          description: "refspec to build"
      - string:
          name: GERRIT_CHANGE_NUMBER
          default: "8313"
          description: "change # to build"
      - string:
          name: GERRIT_PATCHSET_NUMBER
          default: "2"
          description: "patchset # to build"
    build-discarder:
      days-to-keep: 30
      artifact-days-to-keep: -1
      artifact-num-to-keep: 5
    wrappers:
      - agl-infra-wrappers:
          build-timeout: '{build-timeout}'
      - openstack:
          single-use: false
    builders:
      - shell: |
          # set
          echo "#### CIBT +1 ####"
          ssh -p 29418 agl-jobbuilder@gerrit.automotivelinux.org gerrit review ${{GERRIT_CHANGE_NUMBER}},${{GERRIT_PATCHSET_NUMBER}} --verified +1 --label ci-image-build=+1 --label ci-image-boot-test=+1 -n NONE --message='CI-Image-Boot-Test\ finished' || true


################################################################################################################################################################
################################################################################################################################################################

################################################################################
################################################################################
# -remove-artifacts = merge/abandon, remove artifacts and later trigger sstate
################################################################################
- job-template:
    name: 'ci-platform-{project}-remove-artifacts'
    project-type: freestyle
    concurrent: true
    node: control-slave
    parameters:
      - string:
          name: GERRIT_PROJECT
          default: 'AGL/{project}'
          description: "Project to build"
      - string:
          name: GERRIT_BRANCH
          default: master
          description: "branch to build"
      - string:
          name: GERRIT_REFSPEC
          default: refs/heads/master
          description: "refspec to build"
      - string:
          name: GERRIT_CHANGE_NUMBER
          default: "8313"
          description: "change # to build"
      - string:
          name: GERRIT_PATCHSET_NUMBER
          default: "2"
          description: "patchset # to build"
    build-discarder:
      days-to-keep: 30
      artifact-days-to-keep: -1
      artifact-num-to-keep: 5
    wrappers:
      - agl-infra-wrappers:
          build-timeout: '{build-timeout}'
      - openstack:
          single-use: false
    triggers:
      - gerrit-trigger-silent-patch-merged-abandoned:
          name: 'AGL/{project}'
          branch: '**/**/**'
    builders:
      - shell:
          !include-raw-escape:
          - ../common/include-agl-remove-artifacts-changeid.sh