5 Commits

Author SHA1 Message Date
Hideki Saito
947dacff6a Updated azure CI targets and readme (#713) (#727)
Added lastest branches and updated information
Normalized test versions to cover all supported ones

Apply suggestions from code review


(cherry picked from commit 0cc6be274c)

Co-authored-by: Brian Coca <bcoca@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2026-05-18 07:49:31 +09:00
Hideki Saito
76af9b713e Backport #711 (#726)
Signed-off-by: Hideki Saito <saito@fgrep.org>
2026-05-18 03:36:08 +09:00
Hideki Saito
8f9c844b3d ci: add certification.yml GitHub workflow (#705) (#725)
(cherry picked from commit aece4a9632)

Co-authored-by: Andrew Klychkov <aklychko@redhat.com>
2026-05-18 03:14:22 +09:00
Hideki Saito
d901769726 chore: remove .github/BOTMETA.yml (#706) (#723)
(cherry picked from commit 692b906b82)

Co-authored-by: Andrew Klychkov <aklychko@redhat.com>
2026-05-18 02:31:07 +09:00
Hideki Saito
cdce0f5218 Replace CI with the main branch (#722)
- Add 2.21 stages (Sanity, Docker, Remote)
- Update distro versions (Fedora 44, RHEL 10.1/9.7, FreeBSD 14.4/15.0)
- Remove CentOS 7 from Docker 2.16
- Add 2.21 to Summary stage dependencies
- Backport #718
2026-05-18 01:58:03 +09:00
17 changed files with 158 additions and 142 deletions

View File

@@ -7,5 +7,9 @@ skip_list:
- meta-runtime[unsupported-version] # This rule doesn't make any sense
- fqcn[deep] # This rule produces false positives for files in tests/unit/plugins/action/fixtures/
- sanity[cannot-ignore] # This rule is skipped to keep backward compatibility with Python 2
exclude_paths:
- changelogs/
- .github/
- tests/
- meta/

View File

@@ -57,6 +57,23 @@ stages:
test: units
- name: Lint
test: lint
- stage: Sanity_2_21
displayName: Ansible 2.21 Sanity & Units & Lint
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: "{0}"
testFormat: 2.21/{0}
targets:
- name: Sanity
test: sanity
- name: Units
test: units
- name: Lint
test: lint
- stage: Sanity_2_20
displayName: Ansible 2.20 Sanity & Units & Lint
dependsOn: []
@@ -72,6 +89,7 @@ stages:
test: units
- name: Lint
test: lint
- stage: Sanity_2_19
displayName: Ansible 2.19 Sanity & Units & Lint
dependsOn: []
@@ -87,6 +105,7 @@ stages:
test: units
- name: Lint
test: lint
- stage: Sanity_2_18
displayName: Ansible 2.18 Sanity & Units & Lint
dependsOn: []
@@ -102,6 +121,7 @@ stages:
test: units
- name: Lint
test: lint
- stage: Sanity_2_17
displayName: Ansible 2.17 Sanity & Units & Lint
dependsOn: []
@@ -117,6 +137,8 @@ stages:
test: units
- name: Lint
test: lint
# 2.16 is LTS
- stage: Sanity_2_16
displayName: Ansible 2.16 Sanity & Units & Lint
dependsOn: []
@@ -132,6 +154,7 @@ stages:
test: units
- name: Lint
test: lint
## Docker
- stage: Docker_devel
displayName: Docker devel
@@ -141,12 +164,28 @@ stages:
parameters:
testFormat: devel/linux/{0}/1
targets:
- name: Fedora 42
test: fedora42
- name: Fedora 44
test: fedora44
- name: Ubuntu 24.04
test: ubuntu2404
- name: Ubuntu 26.04
test: ubuntu2604
- stage: Docker_2_21
displayName: Docker 2.21
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.21/linux/{0}/1
targets:
- name: Fedora 43
test: fedora43
- name: Ubuntu 22.04
test: ubuntu2204
- name: Ubuntu 24.04
test: ubuntu2404
- stage: Docker_2_20
displayName: Docker 2.20
dependsOn: []
@@ -161,6 +200,7 @@ stages:
test: ubuntu2204
- name: Ubuntu 24.04
test: ubuntu2404
- stage: Docker_2_19
displayName: Docker 2.19
dependsOn: []
@@ -175,6 +215,7 @@ stages:
test: ubuntu2204
- name: Ubuntu 24.04
test: ubuntu2404
- stage: Docker_2_18
displayName: Docker 2.18
dependsOn: []
@@ -189,6 +230,7 @@ stages:
test: ubuntu2204
- name: Ubuntu 24.04
test: ubuntu2404
- stage: Docker_2_17
displayName: Docker 2.17
dependsOn: []
@@ -201,6 +243,7 @@ stages:
test: fedora39
- name: Ubuntu 22.04
test: ubuntu2204
- stage: Docker_2_16
displayName: Docker 2.16
dependsOn: []
@@ -209,8 +252,6 @@ stages:
parameters:
testFormat: 2.16/linux/{0}/1
targets:
- name: CentOS 7
test: centos7
- name: Fedora 38
test: fedora38
- name: Ubuntu 22.04
@@ -225,14 +266,32 @@ stages:
parameters:
testFormat: devel/{0}/1
targets:
- name: RHEL 10.0
test: rhel/10.0
- name: RHEL 9.6
test: rhel/9.6
- name: FreeBSD 14.3
test: freebsd/14.3
- name: FreeBSD 13.5
test: freebsd/13.5
- name: RHEL 10.1
test: rhel/10.1
- name: RHEL 9.7
test: rhel/9.7
- name: FreeBSD 14.4
test: freebsd/14.4
- name: FreeBSD 15.0
test: freebsd/15.0
- stage: Remote_2_21
displayName: Remote 2.21
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.21/{0}/1
targets:
- name: RHEL 10.1
test: rhel/10.1
- name: RHEL 9.7
test: rhel/9.7
- name: FreeBSD 14.4
test: freebsd/14.4
- name: FreeBSD 15.0
test: freebsd/15.0
- stage: Remote_2_20
displayName: Remote 2.20
dependsOn: []
@@ -241,14 +300,15 @@ stages:
parameters:
testFormat: 2.20/{0}/1
targets:
- name: RHEL 10.0
test: rhel/10.0
- name: RHEL 9.6
test: rhel/9.6
- name: RHEL 10.1
test: rhel/10.1
- name: RHEL 9.7
test: rhel/9.7
- name: FreeBSD 14.3
test: freebsd/14.3
- name: FreeBSD 13.5
test: freebsd/13.5
- stage: Remote_2_19
displayName: Remote 2.19
dependsOn: []
@@ -257,14 +317,15 @@ stages:
parameters:
testFormat: 2.19/{0}/1
targets:
- name: RHEL 10.0
test: rhel/10.0
- name: RHEL 9.5
test: rhel/9.5
- name: RHEL 10.1
test: rhel/10.1
- name: RHEL 9.7
test: rhel/9.7
- name: FreeBSD 14.2
test: freebsd/14.2
- name: FreeBSD 13.5
test: freebsd/13.5
- stage: Remote_2_18
displayName: Remote 2.18
dependsOn: []
@@ -273,12 +334,13 @@ stages:
parameters:
testFormat: 2.18/{0}/1
targets:
- name: RHEL 10.0
test: rhel/10.0
- name: RHEL 9.4
test: rhel/9.4
- name: RHEL 10.1
test: rhel/10.1
- name: RHEL 9.7
test: rhel/9.7
- name: FreeBSD 13.5
test: freebsd/13.5
- stage: Remote_2_17
displayName: Remote 2.17
dependsOn: []
@@ -287,11 +349,11 @@ stages:
parameters:
testFormat: 2.17/{0}/1
targets:
# 2.17 remote target doesn't have RHEL 9 image
- name: RHEL 10.0
test: rhel/10.0
- name: FreeBSD 13.5
test: freebsd/13.5
- stage: Remote_2_16
displayName: Remote 2.16
dependsOn: []
@@ -300,9 +362,8 @@ stages:
parameters:
testFormat: 2.16/{0}/1
targets:
# 2.16 remote target only has RHEL 9.6 image
- name: RHEL 9.6
test: rhel/9.6
- name: RHEL 10.1
test: rhel/10.1
## Finally
@@ -324,6 +385,9 @@ stages:
- Sanity_2_20
- Remote_2_20
- Docker_2_20
- Sanity_2_21
- Remote_2_21
- Docker_2_21
- Sanity_devel
- Remote_devel
- Docker_devel

52
.github/BOTMETA.yml vendored
View File

@@ -1,52 +0,0 @@
---
automerge: false
files:
$module_utils/mount.py:
labels: mount
$modules/acl.py:
authors: astorije bcoca
labels: acl
ignore: astorije
$modules/at.py:
authors: risaacson
labels: at
$modules/authorized_key.py:
authors: ansible
labels: authorized_key
$modules/mount.py:
authors: ansible skvidal
maintainers: jtyr
labels: mount
ignore: skvidal
$modules/patch.py:
authors: jirutka luisperlaz
$modules/seboolean.py:
authors: sfromm
labels: seboolean
$modules/selinux.py:
authors: goozbach
maintainers: samdoran
labels: selinux
$modules/synchronize.py:
authors: tima
labels: synchronize
$modules/sysctl.py:
authors: davixx
maintainers: Akasurde
labels: sysctl
$plugins/:
labels: profile
$plugins/debug.py:
labels: debug
$plugins/patch.py:
labels: patch
$plugins/synchronize.py:
labels: synchronize
$plugins/timer.py:
macros:
actions: plugins/action
callbacks: plugins/callback
module_utils: plugins/module_utils
modules: plugins/modules
plugins: plugins/plugins
shells: plugins/shell

35
.github/workflows/certification.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
---
# This workflow calls the latest version of the
# reusable workflow.
# You can copy this file into your respository if
# you want to check against pinned versions of
# Automation Hub tests.
name: Run collection certification checks
on:
pull_request:
branches: [main]
workflow_dispatch:
schedule:
- cron: '0 6 * * *'
concurrency:
group: cert-ver-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
# Files that are not related to the core functionality
# of your collection can cause Ansible Lint to fail.
# If this happens, add an .ansible-lint file that includes
# those files and directories to the root of your
# repository; for example:
# https://github.com/ansible-collections/partner-certification-checker/blob/main/.ansible-lint
# https://github.com/ansible-collections/partner-certification-checker/blob/main/.ansible-lint
# If there are sanity test failures that cannot be fixed and are allowed to ignore
# https://docs.ansible.com/projects/lint/rules/sanity/, create a sanity ignore file
# https://docs.ansible.com/projects/ansible/devel/dev_guide/testing/sanity/ignores.html#ignore-file-location
# for each affected version of ansible-core (for example, `tests/sanity/ignore-2.18.txt`) and add corresponding entries.
jobs:
call:
uses: ansible-collections/partner-certification-checker/.github/workflows/certification-reusable.yml@v0.1

View File

@@ -78,10 +78,15 @@ ansible-doc -t callback ansible.posix.profile_tasks
The following ansible-core versions have been tested with this collection:
- ansible-core 2.20 (devel)
- ansible-core 2.19 (stable) *
- ansible-core 2.18 (stable)
- ansible-core 2.17 (stable)
- ansible-core 2.22 (devel)
- ansible-core 2.21 (stable)
- ansible-core 2.20 (stable)
- ansible-core 2.19 (stable)
- ansible-core 2.18 (LTS)
- ansible-core 2.17 (EoL)
- ansible-core 2.16 (EoL)
For most up to date support info, see the [ansible-core support matrix](https://docs.ansible.com/projects/ansible/latest/reference_appendices/release_and_maintenance.html#ansible-core-support-matrix)
## Contributing

View File

@@ -1,2 +0,0 @@
tests/utils/shippable/check_matrix.py replace-urlopen
tests/utils/shippable/timing.py shebang

View File

@@ -1,2 +0,0 @@
tests/utils/shippable/check_matrix.py replace-urlopen
tests/utils/shippable/timing.py shebang

View File

@@ -1 +0,0 @@
tests/utils/shippable/timing.py shebang

View File

@@ -1 +0,0 @@
tests/utils/shippable/timing.py shebang

View File

@@ -1 +0,0 @@
tests/utils/shippable/timing.py shebang

View File

@@ -1 +0,0 @@
tests/utils/shippable/timing.py shebang

View File

@@ -1 +0,0 @@
tests/utils/shippable/timing.py shebang

View File

@@ -1,4 +1,3 @@
tests/utils/shippable/timing.py shebang
plugins/action/synchronize.py pylint:ansible-bad-import-from
plugins/callback/cgroup_perf_recap.py pylint:ansible-bad-import-from
plugins/modules/mount.py pylint:ansible-bad-import-from

View File

@@ -0,0 +1,9 @@
plugins/action/synchronize.py pylint:ansible-bad-import-from
plugins/callback/cgroup_perf_recap.py pylint:ansible-bad-import-from
plugins/modules/mount.py pylint:ansible-bad-import-from
plugins/modules/sysctl.py pylint:ansible-bad-import-from
plugins/shell/csh.py pylint:ansible-bad-import-from
plugins/shell/fish.py pylint:ansible-bad-import-from
tests/unit/mock/procenv.py pylint:ansible-bad-import-from
tests/unit/mock/yaml_helper.py pylint:ansible-bad-import-from
tests/unit/modules/conftest.py pylint:ansible-bad-import-from

View File

@@ -1,42 +0,0 @@
boto3
placebo
pycrypto
passlib
pypsrp
python-memcached
pytz
pyvmomi
redis
requests
setuptools > 0.6 # pytest-xdist installed via requirements does not work with very old setuptools (sanity_ok)
unittest2 ; python_version < '2.7'
importlib ; python_version < '2.7'
netaddr
ipaddress
netapp-lib
solidfire-sdk-python
# requirements for F5 specific modules
f5-sdk ; python_version >= '2.7'
f5-icontrol-rest ; python_version >= '2.7'
deepdiff
# requirement for Fortinet specific modules
pyFMG
# requirement for aci_rest module
xmljson
# requirement for winrm connection plugin tests
pexpect
# requirement for the linode module
linode-python # APIv3
linode_api4 ; python_version > '2.6' # APIv4
# requirement for the gitlab module
python-gitlab
httmock
# requirment for kubevirt modules
openshift ; python_version >= '2.7'

View File

@@ -65,13 +65,16 @@ fi
export ANSIBLE_COLLECTIONS_PATH="${PWD}/../../../"
# START: HACK install dependencies
if [ "${ansible_version}" == "2.9" ] || [ "${ansible_version}" == "2.10" ]; then
# Note: Since community.general 5.x, Ansible Core versions prior to 2.11 are not supported.
# So we need to use 4.8.1 for Ansible 2.9 and Ansible Engine 2.10.
retry git clone --depth=1 --single-branch -b 4.8.1 https://github.com/ansible-collections/community.general.git "${ANSIBLE_COLLECTIONS_PATH}/ansible_collections/community/general"
if [ "${ansible_version}" == "2.16" ]; then
# Note: Since community.general 12.x dropped support for ansible-core 2.16,
# we need to use stable-11 for ansible-core 2.16.
target_branch='stable-11'
else
retry git clone --depth=1 --single-branch https://github.com/ansible-collections/community.general.git "${ANSIBLE_COLLECTIONS_PATH}/ansible_collections/community/general"
target_branch='main'
fi
retry git clone --depth=1 --single-branch -b "${target_branch}" https://github.com/ansible-collections/community.general.git "${ANSIBLE_COLLECTIONS_PATH}/ansible_collections/community/general"
# Note: we're installing with git to work around Galaxy being a huge PITA (https://github.com/ansible/galaxy/issues/2429)
# END: HACK

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env python3
#!/usr/bin/env python
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type