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:7.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: 3.9
            - test: '3.10'
            - test: 3.11
            - test: 3.12
            - test: 3.13
            - test: 3.14
  - stage: Windows
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: Server {0}
          testFormat: windows/{0}/1
          targets:
            - name: 2016 WinRM HTTP
              test: 2016/winrm/http
            - name: 2019 WinRM HTTPS
              test: 2019/winrm/https
            - name: 2022 WinRM HTTPS
              test: 2022/winrm/https
            - name: 2022 PSRP HTTP
              test: 2022/psrp/http
            - name: 2022 SSH Key
              test: 2022/ssh/key
            - name: 2025 PSRP HTTP
              test: 2025/psrp/http
            - name: 2025 SSH Key
              test: 2025/ssh/key
  - stage: Remote
    dependsOn: []
    jobs:
      - template: templates/matrix.yml  # context/target
        parameters:
          targets:
            - name: macOS 15.3
              test: macos/15.3
            - name: RHEL 9.7 py39
              test: rhel/9.7@3.9
            - name: RHEL 9.7 py312
              test: rhel/9.7@3.12
            - name: RHEL 10.1
              test: rhel/10.1
            - name: FreeBSD 13.5
              test: freebsd/13.5
            - name: FreeBSD 14.3
              test: freebsd/14.3
          groups:
            - 1
            - 2
      - template: templates/matrix.yml  # context/controller
        parameters:
          targets:
            - name: macOS 15.3
              test: macos/15.3
            - name: RHEL 9.7
              test: rhel/9.7
            - name: RHEL 10.1
              test: rhel/10.1
          groups:
            - 3
            - 4
            - 5
      - template: templates/matrix.yml  # context/controller (ansible-test container management)
        parameters:
          targets:
            - name: Alpine 3.22
              test: alpine/3.22
            - name: Fedora 42
              test: fedora/42
            - name: RHEL 9.7
              test: rhel/9.7
            - name: RHEL 10.1
              test: rhel/10.1
            - name: Ubuntu 24.04
              test: ubuntu/24.04
          groups:
            - 6
  - stage: Docker
    dependsOn: []
    jobs:
      - template: templates/matrix.yml  # context/target
        parameters:
          testFormat: linux/{0}
          targets:
            - name: Alpine 3.22
              test: alpine322
            - name: Fedora 42
              test: fedora42
            - name: Ubuntu 22.04
              test: ubuntu2204
            - name: Ubuntu 24.04
              test: ubuntu2404
          groups:
            - 1
            - 2
      - template: templates/matrix.yml  # context/controller
        parameters:
          testFormat: linux/{0}
          targets:
            - name: Alpine 3.22
              test: alpine322
            - name: Fedora 42
              test: fedora42
            - name: Ubuntu 24.04
              test: ubuntu2404
          groups:
            - 3
            - 4
            - 5
      - template: templates/matrix.yml  # context/target (dnf-oldest, dnf-latest)
        parameters:
          testFormat: linux/{0}
          targets:
            - name: Fedora 42
              test: fedora42
          groups:
            - 7
  - stage: Galaxy
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: Python {0}
          testFormat: galaxy/{0}/1
          targets:
            - test: 3.12
            - test: 3.13
            - test: 3.14
  - stage: Generic
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: Python {0}
          testFormat: generic/{0}/1
          targets:
            - test: 3.12
            - test: 3.13
            - test: 3.14
  - stage: Incidental_Windows
    displayName: Incidental Windows
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: Server {0}
          testFormat: i/windows/{0}
          targets:
            - name: 2016 WinRM HTTP
              test: 2016/winrm/http
            - name: 2019 WinRM HTTPS
              test: 2019/winrm/https
            - name: 2022 WinRM HTTPS
              test: 2022/winrm/https
            - name: 2022 PSRP HTTP
              test: 2022/psrp/http
            - name: 2022 SSH Key
              test: 2022/ssh/key
            - name: 2025 PSRP HTTP
              test: 2025/psrp/http
            - name: 2025 SSH Key
              test: 2025/ssh/key
  - stage: Summary
    condition: succeededOrFailed()
    dependsOn:
      - Sanity
      - Units
      - Windows
      - Remote
      - Docker
      - Galaxy
      - Generic
      - Incidental_Windows
    jobs:
      - template: templates/coverage.yml
