---
- builder:
    name: xtesting-ci-docker-builder
    builders:
      - shell: |
          cd {dir}
          sudo docker build --pull -t {image} .
          sudo docker push {image}
          sudo docker system prune --all -f

- builder:
    name: xtesting-ci-docker-multiarch-builder
    builders:
      - shell: |
          sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
          git clone https://github.com/estesp/manifest-tool
          (cd manifest-tool && git checkout v0.9.0 && \
            sudo -E make && sudo -E make install)
          (cd {dir} && \
            sudo docker build --pull -t {image}:amd64-{tag} . && \
            sudo docker push {image}:amd64-{tag})
          (cd {dir} && \
            git checkout Dockerfile
            sed -i -e "s|{from_amd64}|{to_arm64}|g" Dockerfile
            sudo docker build --platform arm64 --pull -t {image}:arm64-{tag} . && \
            sudo docker push {image}:arm64-{tag})
          (cd {dir} && \
            git checkout Dockerfile
            sed -i -e "s|{from_amd64}|{to_arm}|g" Dockerfile
            sudo docker build --platform arm --pull -t {image}:arm-{tag} . && \
            sudo docker push {image}:arm-{tag})
          sudo manifest-tool push from-args \
            --platforms linux/amd64,linux/arm,linux/arm64 \
            --template {image}:ARCH-{tag} \
            --target {image}:{tag}
          sudo docker system prune --all -f

- scm:
    name: xtesting-ci-docker-scm
    scm:
      - git:
          url: https://github.com/collivier/xtesting-docker.git
          git-config-name:
          git-config-email:

- trigger:
    name: xtesting-ci-docker-trigger
    triggers:
      - pollscm:
          cron: "H/30 * * * *"
      - timed: '@daily'

- parameter:
    name: xtesting-ci-docker-parameter
    parameters:
      - label:
          name: node
          default: 'opnfv-build'

- job-template:
    name: xtesting-ci-docker-{stream}
    scm:
      - xtesting-ci-docker-scm
    parameters:
      - xtesting-ci-docker-parameter
    triggers:
      - xtesting-ci-docker-trigger
    builders:
      - xtesting-ci-docker-builder:
          image: '{image}'
          dir: '{dir}'

- job-template:
    name: xtesting-ci-docker-multitarch-{stream}
    scm:
      - xtesting-ci-docker-scm
    parameters:
      - xtesting-ci-docker-parameter
    triggers:
      - xtesting-ci-docker-trigger
    builders:
      - xtesting-ci-docker-multiarch-builder:
          image: '{image}'
          dir: '{dir}'
          tag: '{tag}'
          from_amd64: '{from_amd64}'
          to_arm64: '{to_arm64}'
          to_arm: '{to_arm}'

- project:
    name: xtesting-ci-docker
    stream:
      - jenkins-lts-slim:
          dir: jenkins.debian
          image: opnfv/xtesting-jenkins:lts-slim
      - jenkins-lts-alpine:
          dir: jenkins
          image: opnfv/xtesting-jenkins:lts-alpine
      - s3www-v0.5.3:
          dir: s3www
          image: opnfv/xtesting-s3www:v0.5.3
    jobs:
      - xtesting-ci-docker-{stream}

- project:
    name: xtesting-ci-docker-multiarch
    stream:
      - jenkins-agent-debian:
          dir: jenkins-agent
          image: opnfv/xtesting-jenkins-agent
          tag: 3283-bullseye
          from_amd64: debian:bullseye
          to_arm64: arm64v8/debian:bullseye
          to_arm: arm32v7/debian:bullseye
      - jenkins-agent-ubuntu:
          dir: jenkins-agent-ubuntu
          image: opnfv/xtesting-jenkins-agent
          tag: 3283-jammy
          from_amd64: ubuntu:jammy
          to_arm64: arm64v8/ubuntu:jammy
          to_arm: arm32v7/ubuntu:jammy
      - jenkins-agent-auto:
          dir: jenkins-agent-auto
          image: opnfv/xtesting-jenkins-agent-auto
          tag: 3283-bullseye
          from_amd64: opnfv/xtesting-jenkins-agent:3283-bullseye
          to_arm64: opnfv/xtesting-jenkins-agent:arm64-3283-bullseye
          to_arm: opnfv/xtesting-jenkins-agent:arm-3283-bullseye
    jobs:
      - xtesting-ci-docker-multitarch-{stream}

- builder:
    name: xtesting-ci-docker-trivy-builder
    builders:
      - shell: |
          curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b .
          ./trivy image --exit-code 1 {image}

- trigger:
    name: xtesting-ci-docker-trivy-trigger
    triggers:
      - timed: '@daily'

- parameter:
    name: xtesting-ci-docker-trivy-parameter
    parameters:
      - label:
          name: node
          default: 'opnfv-build'

- job-template:
    name: 'xtesting-ci-docker-trivy-{stream}'
    triggers:
      - xtesting-ci-docker-trivy-trigger
    parameters:
      - xtesting-ci-docker-trivy-parameter
    builders:
      - xtesting-ci-docker-trivy-builder:
          image: '{image}'

- project:
    name: 'xtesting-ci-docker-trivy'
    stream:
      - jenkins-lts-slim:
          image: opnfv/xtesting-jenkins:lts-slim
      - jenkins-lts-alpine:
          image: opnfv/xtesting-jenkins:lts-alpine
      - s3www-v0.5.3:
          image: opnfv/xtesting-s3www:v0.5.3
      - xtesting-jenkins-agent-3283-bullseye:
          image: opnfv/xtesting-jenkins-agent:3283-bullseye
      - xtesting-jenkins-agent-3283-jammy:
          image: opnfv/xtesting-jenkins-agent:3283-jammy
      - xtesting-jenkins-agent-auto-3283-bullseye:
          image: opnfv/xtesting-jenkins-agent-auto:3283-bullseye
    jobs:
      - 'xtesting-ci-docker-trivy-{stream}'

- view:
    name: xtesting-ci-docker
    view-type: list
    columns:
      - status
      - weather
      - job
      - last-success
      - last-failure
      - last-duration
    regex: ^xtesting-ci-docker.*$