trigger:
  batch: true
  branches:
    include:
      - main
      - stable-*

pr:
  autoCancel: true
  branches:
    include:
      - main
      - stable-*

schedules:
  - cron: 0 9 * * *
    displayName: Nightly
    always: true
    branches:
      include:
        - main
  - cron: 0 12 * * 0
    displayName: Weekly (old stable branches)
    always: true
    branches:
      include:
        - stable-*

variables:
  - name: checkoutPath
    value: ansible_collections/community/docker
  - name: coverageBranches
    value: main
  - name: pipelinesCoverage
    value: coverage
  - name: entryPoint
    value: tests/utils/shippable/shippable.sh
  - name: fetchDepth
    value: 0

resources:
  containers:
    - container: default
      image: quay.io/ansible/azure-pipelines-test-container:1.9.0

pool: Standard

stages:

### Sanity & units
  - stage: Ansible_devel
    displayName: Sanity & Units devel
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          targets:
            - name: Sanity
              test: 'devel/sanity/1'
            - name: Sanity Extra # Only on devel
              test: 'devel/sanity/extra'
            - name: Units
              test: 'devel/units/1'
  - stage: Ansible_2_13
    displayName: Sanity & Units 2.13
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          targets:
            - name: Sanity
              test: '2.13/sanity/1'
            - name: Units
              test: '2.13/units/1'
  - stage: Ansible_2_12
    displayName: Sanity & Units 2.12
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          targets:
            - name: Sanity
              test: '2.12/sanity/1'
            - name: Units
              test: '2.12/units/1'
  - stage: Ansible_2_11
    displayName: Sanity & Units 2.11
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          targets:
            - name: Sanity
              test: '2.11/sanity/1'
            - name: Units
              test: '2.11/units/1'
  - stage: Ansible_2_10
    displayName: Sanity & Units 2.10
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          targets:
            - name: Sanity
              test: '2.10/sanity/1'
            - name: Units
              test: '2.10/units/1'
  - stage: Ansible_2_9
    displayName: Sanity & Units 2.9
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          targets:
            - name: Sanity
              test: '2.9/sanity/1'
            - name: Units
              test: '2.9/units/1'

### Docker
  - stage: Docker_devel
    displayName: Docker devel
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: devel/linux/{0}
          targets:
            - name: CentOS 7
              test: centos7
            - name: Fedora 36
              test: fedora36
            - name: Fedora 35
              test: fedora35
            - name: openSUSE 15
              test: opensuse15
            - name: Ubuntu 18.04
              test: ubuntu1804
            - name: Ubuntu 22.04
              test: ubuntu2204
            - name: Alpine 3
              test: alpine3
          groups:
            - 4
            - 5
  - stage: Docker_2_13
    displayName: Docker 2.13
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.13/linux/{0}
          targets:
            - name: CentOS 7
              test: centos7
            - name: openSUSE 15 py2
              test: opensuse15py2
            - name: Alpine 3
              test: alpine3
          groups:
            - 4
            - 5
  - stage: Docker_2_12
    displayName: Docker 2.12
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.12/linux/{0}
          targets:
            - name: CentOS 8
              test: centos8
            - name: Fedora 34
              test: fedora34
            - name: Ubuntu 20.04
              test: ubuntu2004
          groups:
            - 4
            - 5
  - stage: Docker_2_11
    displayName: Docker 2.11
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.11/linux/{0}
          targets:
            - name: Fedora 33
              test: fedora33
            - name: Alpine 3
              test: alpine3
          groups:
            - 4
            - 5
  - stage: Docker_2_10
    displayName: Docker 2.10
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.10/linux/{0}
          targets:
            - name: Fedora 32
              test: fedora32
            - name: Ubuntu 16.04
              test: ubuntu1604
          groups:
            - 4
            - 5
  - stage: Docker_2_9
    displayName: Docker 2.9
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.9/linux/{0}
          targets:
            - name: Fedora 31
              test: fedora31
          groups:
            - 4
            - 5

### Community Docker
  - stage: Docker_community_devel
    displayName: Docker (community images) devel
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: devel/linux-community/{0}
          targets:
            - name: Debian Bullseye
              test: debian-bullseye/3.9
            - name: ArchLinux
              test: archlinux/3.10
            - name: CentOS Stream 8
              test: centos-stream8/3.8
          groups:
            - 4
            - 5

### Remote
  - stage: Remote_devel
    displayName: Remote devel
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: RHEL {0}
          testFormat: devel/rhel/{0}
          targets:
            - test: '7.9'
            - test: '9.0-pypi-latest'
          groups:
            - 1
            - 2
            - 3
            - 4
            - 5
  - stage: Remote_2_13
    displayName: Remote 2.13
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: RHEL {0}
          testFormat: 2.13/rhel/{0}
          targets:
            - test: '8.5'
          groups:
            - 1
            - 2
            - 3
            - 4
            - 5
  - stage: Remote_2_12
    displayName: Remote 2.12
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: RHEL {0}
          testFormat: 2.12/rhel/{0}
          targets:
            - test: '8.4'
          groups:
            - 1
            - 2
            - 3
            - 4
            - 5
  - stage: Remote_2_11
    displayName: Remote 2.11
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: RHEL {0}
          testFormat: 2.11/rhel/{0}
          targets:
            - test: '8.3'
          groups:
            - 1
            - 2
            - 3
            - 4
            - 5
  - stage: Remote_2_10
    displayName: Remote 2.10
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: RHEL {0}
          testFormat: 2.10/rhel/{0}
          targets:
            - test: '7.8'
          groups:
            - 1
            - 2
            - 3
            - 4
  - stage: Remote_2_9
    displayName: Remote 2.9
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: RHEL {0}
          testFormat: 2.9/rhel/{0}
          targets:
            - test: '8.2'
          groups:
            - 1
            - 2
            - 3
            - 4

  ## Finally

  - stage: Summary
    condition: succeededOrFailed()
    dependsOn:
      - Ansible_devel
      - Ansible_2_13
      - Ansible_2_12
      - Ansible_2_11
      - Ansible_2_10
      - Ansible_2_9
      - Remote_devel
      - Remote_2_13
      - Remote_2_12
      - Remote_2_11
      - Remote_2_10
      - Remote_2_9
      - Docker_devel
      - Docker_2_13
      - Docker_2_12
      - Docker_2_11
      - Docker_2_10
      - Docker_2_9
      - Docker_community_devel
    jobs:
      - template: templates/coverage.yml
