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:4.0.1

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.6
            - test: 3.7
            - test: 3.8
            - test: 3.9
            - test: '3.10'
            - test: 3.11
            - test: 3.12
  - 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: macOS 13.2
              test: macos/13.2
            - name: RHEL 7.9
              test: rhel/7.9
            - name: RHEL 8.8 py36
              test: rhel/8.8@3.6
            - name: RHEL 8.8 py311
              test: rhel/8.8@3.11
            - name: RHEL 9.2 py39
              test: rhel/9.2@3.9
            - name: RHEL 9.2 py311
              test: rhel/9.2@3.11
            - name: FreeBSD 13.2
              test: freebsd/13.2
          groups:
            - 1
            - 2
      - template: templates/matrix.yml  # context/controller
        parameters:
          targets:
            - name: macOS 13.2
              test: macos/13.2
            - name: RHEL 8.8
              test: rhel/8.8
            - name: RHEL 9.2
              test: rhel/9.2
            - name: FreeBSD 13.2
              test: freebsd/13.2
          groups:
            - 3
            - 4
            - 5
      - template: templates/matrix.yml  # context/controller (ansible-test container management)
        parameters:
          targets:
            - name: Alpine 3.18
              test: alpine/3.18
            - name: Fedora 38
              test: fedora/38
            - name: RHEL 8.8
              test: rhel/8.8
            - name: RHEL 9.2
              test: rhel/9.2
            - name: Ubuntu 22.04
              test: ubuntu/22.04
          groups:
            - 6
  - stage: Docker
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: linux/{0}
          targets:
            - name: Alpine 3
              test: alpine3
            - name: CentOS 7
              test: centos7
            - name: Fedora 38
              test: fedora38
            - name: openSUSE 15
              test: opensuse15
            - 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: Alpine 3
              test: alpine3
            - name: Fedora 38
              test: fedora38
            - 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.10'
            - test: 3.11
            - test: 3.12
  - stage: Generic
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: Python {0}
          testFormat: generic/{0}/1
          targets:
            - test: '3.10'
            - test: 3.11
            - test: 3.12
  - 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: Incidental
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: i/{0}/1
          targets:
            - name: IOS Python
              test: ios/csr1000v/
            - name: VyOS Python
              test: vyos/1.1.8/
  - stage: Summary
    condition: succeededOrFailed()
    dependsOn:
      - Sanity
      - Units
      - Windows
      - Remote
      - Docker
      - Galaxy
      - Generic
      - Incidental_Windows
      - Incidental
    jobs:
      - template: templates/coverage.yml