---
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
        - stable-*

variables:
  - name: checkoutPath
    value: ansible_collections/ansible/posix
  - 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:6.0.0

pool: Standard

stages:
  - stage: Sanity_devel
    displayName: Ansible devel sanity
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: "{0}"
          testFormat: devel/{0}
          targets:
            - name: Sanity
              test: sanity
            - name: Units
              test: units
            - name: Lint
              test: lint
  - stage: Sanity_2_18
    displayName: Ansible 2.18 sanity
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: "{0}"
          testFormat: 2.18/{0}
          targets:
            - name: Sanity
              test: sanity
            - name: Units
              test: units
            - name: Lint
              test: lint
  - stage: Sanity_2_17
    displayName: Ansible 2.17 sanity
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: "{0}"
          testFormat: 2.17/{0}
          targets:
            - name: Sanity
              test: sanity
            - name: Units
              test: units
            - name: Lint
              test: lint
  - stage: Sanity_2_16
    displayName: Ansible 2.16 sanity
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: "{0}"
          testFormat: 2.16/{0}
          targets:
            - name: Sanity
              test: sanity
            - name: Units
              test: units
  - stage: Sanity_2_15
    displayName: Ansible 2.15 sanity
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          nameFormat: "{0}"
          testFormat: 2.15/{0}
          targets:
            - name: Sanity
              test: sanity
            - name: Units
              test: units
  ## Docker
  - stage: Docker_devel
    displayName: Docker devel
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: devel/linux/{0}/1
          targets:
            - name: Fedora 40
              test: fedora40
            - name: Ubuntu 22.04
              test: ubuntu2204
            - name: Ubuntu 24.04
              test: ubuntu2404
  - stage: Docker_2_18
    displayName: Docker devel
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.18/linux/{0}/1
          targets:
            - name: Fedora 40
              test: fedora40
            - name: Ubuntu 22.04
              test: ubuntu2204
            - name: Ubuntu 24.04
              test: ubuntu2404
  - stage: Docker_2_17
    displayName: Docker 2.17
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.17/linux/{0}/1
          targets:
            - name: Fedora 39
              test: fedora39
            - name: Ubuntu 20.04
              test: ubuntu2004
            - name: Ubuntu 22.04
              test: ubuntu2204
  - stage: Docker_2_16
    displayName: Docker 2.16
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.16/linux/{0}/1
          targets:
            - name: CentOS 7
              test: centos7
            - name: Fedora 38
              test: fedora38
            - name: Ubuntu 20.04
              test: ubuntu2004
            - name: Ubuntu 22.04
              test: ubuntu2204

  - stage: Docker_2_15
    displayName: Docker 2.15
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.15/linux/{0}/1
          targets:
            - name: CentOS 7
              test: centos7
            - name: Fedora 37
              test: fedora37
            - name: openSUSE 15 py3
              test: opensuse15
            - name: Ubuntu 20.04
              test: ubuntu2004
            - name: Ubuntu 22.04
              test: ubuntu2204

  ## Remote
  - stage: Remote_devel
    displayName: Remote devel
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: devel/{0}/1
          targets:
            - name: RHEL 9.4
              test: rhel/9.4
            - name: FreeBSD 14.1
              test: freebsd/14.1
            - name: FreeBSD 13.4
              test: freebsd/13.4
  - stage: Remote_2_18
    displayName: Remote devel
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.18/{0}/1
          targets:
            - name: RHEL 9.4
              test: rhel/9.4
            - name: FreeBSD 13.3
              test: freebsd/13.3
  - stage: Remote_2_17
    displayName: Remote 2.17
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.17/{0}/1
          targets:
            - name: RHEL 9.3
              test: rhel/9.3
            - name: FreeBSD 13.3
              test: freebsd/13.3
  - stage: Remote_2_16
    displayName: Remote 2.16
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.16/{0}/1
          targets:
            - name: RHEL 8.8
              test: rhel/8.8
            - name: RHEL 9.2
              test: rhel/9.2
            - name: FreeBSD 13.2
              test: freebsd/13.2

  - stage: Remote_2_15
    displayName: Remote 2.15
    dependsOn: []
    jobs:
      - template: templates/matrix.yml
        parameters:
          testFormat: 2.15/{0}/1
          targets:
            - name: RHEL 7.9
              test: rhel/7.9
            - name: RHEL 8.7
              test: rhel/8.7
            - name: RHEL 9.1
              test: rhel/9.1
            - name: FreeBSD 13.2
              test: freebsd/13.2

  ## Finally

  - stage: Summary
    condition: succeededOrFailed()
    dependsOn:
      - Sanity_2_15
      - Remote_2_15
      - Docker_2_15
      - Sanity_2_16
      - Remote_2_16
      - Docker_2_16
      - Sanity_2_17
      - Remote_2_17
      - Docker_2_17
      - Sanity_2_18
      - Remote_2_18
      - Docker_2_18
      - Sanity_devel
      - Remote_devel
      - Docker_devel
    jobs:
      - template: templates/coverage.yml
