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

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

schedules:
  - cron: 0 7 * * *
    displayName: Nightly
    always: true
    branches:
      include:
        - devel
        - stable-*

variables:
  - name: checkoutPath
    value: ansible
  - name: coverageBranches
    value: devel
  - name: entryPoint
    value: .azure-pipelines/commands/entry-point.sh
  - name: fetchDepth
    value: 500
  - name: defaultContainer
    value: quay.io/ansible/azure-pipelines-test-container:6.0.0

pool: Standard

stages:
  - stage: Sanity
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: Test {0}
          testFormat: sanity/{0}
          targets:
            - test: 1
            - test: 2
  - stage: Units
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: Python {0}
          testFormat: units/{0}
          targets:
            - test: 2.7
            - test: 3.5
            - test: 3.6
            - test: 3.7
            - test: 3.8
            - test: 3.9
            - test: '3.10'
            - test: 3.11
  - stage: Windows
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: Server {0}
          testFormat: windows/{0}/1
          targets:
            - test: 2016
            - test: 2019
            - test: 2022
  - stage: Remote
    dependsOn: []
    jobs:
      - template: templates/matrix.yml  # context/target
        parameters:
          targets:
            - name: RHEL 7.9
              test: rhel/7.9
            - name: RHEL 8.10 py36
              test: rhel/8.10@3.6
            - name: RHEL 8.10 py39
              test: rhel/8.10@3.9
            - name: RHEL 9.6
              test: rhel/9.6
          groups:
            - 1
            - 2
      - template: templates/matrix.yml  # context/controller
        parameters:
          targets:
            - name: RHEL 8.10
              test: rhel/8.10
            - name: RHEL 9.6
              test: rhel/9.6
          groups:
            - 3
            - 4
            - 5
      - template: templates/matrix.yml  # context/controller (ansible-test container management)
        parameters:
          targets:
            - name: RHEL 8.10
              test: rhel/8.10
            - name: RHEL 9.6
              test: rhel/9.6
            - name: Ubuntu 20.04
              test: ubuntu/20.04
            - name: Ubuntu 22.04
              test: ubuntu/22.04
          groups:
            - 6
  - stage: Docker
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: linux/{0}
          targets:
            - name: Ubuntu 20.04
              test: ubuntu2004
            - name: Ubuntu 22.04
              test: ubuntu2204
          groups:
            - 1
            - 2
      - template: templates/matrix.yml
        parameters:
          testFormat: linux/{0}
          targets:
            - name: Ubuntu 22.04
              test: ubuntu2204
          groups:
            - 3
            - 4
            - 5
  - stage: Galaxy
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: Python {0}
          testFormat: galaxy/{0}/1
          targets:
            - test: 3.9
            - test: '3.10'
            - test: 3.11
  - stage: Generic
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: Python {0}
          testFormat: generic/{0}/1
          targets:
            - test: 3.9
            - test: '3.10'
            - test: 3.11
  - stage: Incidental_Windows
    displayName: Incidental Windows
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: Server {0}
          testFormat: i/windows/{0}
          targets:
            - test: 2016
            - test: 2019
            - test: 2022
  - stage: Summary
    condition: succeededOrFailed()
    dependsOn:
      - Sanity
      - Units
      - Windows
      - Remote
      - Docker
      - Galaxy
      - Generic
      - Incidental_Windows
    jobs:
      - template: templates/coverage.yml
