Skip to content

Commit

Permalink
upstream CI: Use Azure 'loops' to create stages
Browse files Browse the repository at this point in the history
This patch modify the pipelines to create stages using the 'each'
expression on Azure pipelines, so that the configuration and the list of
distributions can be set using variables.

Testing CentOS 8 Stream and Galaxy collections still need to be handled
in a separate group, although, the pipeline configuration becomes easily
changed, specially when updating Ansible versions.
  • Loading branch information
rjeffman committed Nov 13, 2024
1 parent cb32269 commit 3e405fd
Show file tree
Hide file tree
Showing 5 changed files with 119 additions and 229 deletions.
60 changes: 26 additions & 34 deletions infra/azure/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,72 +5,64 @@ trigger:
pool:
vmImage: 'ubuntu-20.04'

stages:
variables:
ansible_version: "-core >=2.16,<2.17"
ansible_latest: "-core"
ansible_minimum: "-core <2.16"
distros: "fedora-latest,c9s,fedora-rawhide"

# Fedora
stages:

- stage: Fedora_Ansible_Latest
- stage: fedora_latest_ansible_latest
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: fedora-latest
ansible_version: "-core"
ansible_version: ${{ variables.ansible_latest }}
skip_git_test: true

# Fedora

- stage: Fedora_Ansible_min_supported
- stage: fedora_latest_ansible_2_15
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: fedora-latest
ansible_version: "-core <2.16"
ansible_version: ${{ variables.ansbile_minimum }}
skip_git_test: true

# Fedora
# Supported distros

- stage: Fedora_Latest
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: fedora-latest
skip_git_test: true
ansible_version: "-core >=2.16,<2.17"
- ${{ each distro in split(variables.distros, ',') }}:
- stage: ${{ replace(distro, '-', '_') }}_ansible_2_16
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: ${{ distro }}
ansible_version: ${{ variables.ansible_version }}
skip_git_test: true
test_galaxy: false

# Galaxy on Fedora

- stage: Galaxy_Fedora_Latest
- stage: galaxy_fedora_latest_ansible_2_16
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: fedora-latest
ansible_version: "-core >=2.16,<2.17"
ansible_version: ${{ variables.ansible_version }}
skip_git_test: true
test_galaxy: true

# CentOS 9 Stream

- stage: CentOS_9_Stream
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: c9s
ansible_version: "-core >=2.16,<2.17"
skip_git_test: true

# CentOS 8 Stream
# CentOS 8 Stream, latest supported Ansible version.

- stage: CentOS_8_Stream
- stage: c8s_ansible_2_16
dependsOn: []
jobs:
- template: templates/group_tests.yml
Expand Down
45 changes: 11 additions & 34 deletions infra/azure/build-containers.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---

schedules:
- cron: "0 0 * * 0"
displayName: Weekly Sunday midnight build
Expand All @@ -13,46 +12,24 @@ trigger: none
pool:
vmImage: 'ubuntu-24.04'

variables: { distros: "fedora-latest,fedora-rawhide,c9s" }

stages:

- ${{ each distro in split(variables.distros, ',') }}:
- stage: build_${{ join('_', split(distro, '-')) }}
dependsOn: []
jobs:
- template: templates/build_container.yml
parameters:
distro: ${{ distro }}

# Special case for CentOS 8 Stream
- stage: CentOS_8_Stream
dependsOn: []
jobs:
- template: templates/build_container.yml
parameters:
job_name_suffix: C8S
distro: c8s
# ansible-core 2.17+ cannot be used to deploy on CentOS 8 Stream.
ansible_core_version: "<2.17"

- stage: CentOS_9_Stream
dependsOn: []
jobs:
- template: templates/build_container.yml
parameters:
job_name_suffix: C9S
distro: c9s

- stage: CentOS_10_Stream
dependsOn: []
jobs:
- template: templates/build_container.yml
parameters:
job_name_suffix: C10S
distro: c10s

- stage: Fedora_Latest
dependsOn: []
jobs:
- template: templates/build_container.yml
parameters:
job_name_suffix: FedoraLatest
distro: fedora-latest

- stage: Fedora_Rawhide
dependsOn: []
jobs:
- template: templates/build_container.yml
parameters:
job_name_suffix: FedoraRawhide
distro: fedora-rawhide
173 changes: 63 additions & 110 deletions infra/azure/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,115 +12,68 @@ trigger: none
pool:
vmImage: 'ubuntu-20.04'

stages:

# Fedora

- stage: fedora_latest_Ansible_Core_2_15
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: fedora-latest
ansible_version: "-core >=2.15,<2.16"
skip_git_test: true

- stage: fedora_latest_Ansible_Core_2_16
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: fedora-latest
ansible_version: ""
skip_git_test: true

- stage: fedora_latest_Ansible_Core_2_17
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: fedora-latest
ansible_version: "-core >=2.17"
skip_git_test: true

# Galaxy on Fedora

- stage: Galaxy_fedora_latest_Ansible_Core_2_17
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: fedora-latest
ansible_version: "-core >=2.17,<2.18"
skip_git_test: true
test_galaxy: true

# Fedora Rawhide
variables:
# We need to have two sets, as c8s is not supported by all ansible versions
recent_distros: "fedora-latest,fedora-rawhide,c9s"
distros: "fedora-latest,fedora-rawhide,c9s,c8s"
ansible_latest: "-core"
ansible_minimum: "-core <2.16"
ansible_version: "-core >=2.16,<2.17"

- stage: fedora_rawhide_Ansible_Core_2_17
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: fedora-rawhide
ansible_version: "-core >=2.17,<2.18"
skip_git_test: true

# CentoOS 9 Stream

- stage: c9s_Ansible_Core_2_15
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: c9s
ansible_version: "-core >=2.15,<2.16"
skip_git_test: true

- stage: c9s_Ansible_Core_2_16
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: c9s
ansible_version: "-core >=2.16,<2.17"
skip_git_test: true

- stage: c9s_Ansible_Core_2_17
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: c9s
ansible_version: "-core >=2.17,<2.18"
skip_git_test: true

# CentOS 8 Stream only works up to ansible-core 2.16.z

- stage: c8s_Ansible_Core_2_15
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: c8s
ansible_version: "-core >=2.15,<2.16"
skip_git_test: true
stages:

- stage: c8s_Ansible_Core_2_16
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: c8s
ansible_version: "-core >=2.16,<2.17"
skip_git_test: true
# Minimum ansible

- ${{ each distro in split(variables.distros, ',') }}:
- stage: ${{ replace(distro, '-', '_') }}_ansible_2_15
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: fedora-latest
ansible_version: ${{ variables.ansible_minimum }}
skip_git_test: true
test_galaxy: false

# Latest ansible

- ${{ each distro in split(variables.recent_distros, ',') }}:
- stage: ${{ replace(distro, '-', '_') }}_ansible_latest
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: ${{ distro }}
ansible_version: ${{ variables.ansible_latest }}
skip_git_test: true
test_galaxy: false

# Selected ansible-core version

- ${{ each distro in split(variables.distros, ',') }}:
- stage: ${{ replace(distro, '-', '_') }}_ansible_2_16
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: ${{ distro }}
ansible_version: ${{ variables.ansible_version }}
skip_git_test: true
test_galaxy: false

# Galaxy collection with selected ansible-core version

- ${{ each distro in split(variables.distros, ',') }}:
- stage: galaxy_${{ replace(distro, '-', '_') }}_asible_2_16
dependsOn: []
jobs:
- template: templates/group_tests.yml
parameters:
build_number: $(Build.BuildNumber)
distro: ${{ distro }}
ansible_version: ${{ variables.ansible_version }}
skip_git_test: true
test_galaxy: true
Loading

0 comments on commit 3e405fd

Please sign in to comment.