A composite GitHub Action encapsulating the GitHub Actions CI/CD workflows setup necessary for testing Ansible collection repositories on GitHub.
To use the action add the following step to your workflow file (e.g.
.github/workflows/ansible-test.yml
)
- name: Perform integration testing with ansible-test
uses: ansible-community/ansible-test-gh-action@release/v1
with:
ansible-core-version: stable-2.14
pre-test-cmd: echo This runs before the ansible-test invocation
target-python-version: 3.11
controller-python-version: auto
testing-type: integration
test-deps: ansible.netcommon
- name: Perform sanity testing with ansible-test
uses: ansible-community/ansible-test-gh-action@release/v1
with:
ansible-core-version: stable-2.14
testing-type: sanity
- name: Perform unit testing with ansible-test
uses: ansible-community/ansible-test-gh-action@release/v1
with:
ansible-core-version: stable-2.14
pre-test-cmd: echo This runs before the ansible-test invocation
target-python-version: 3.11
testing-type: units
test-deps: >-
ansible.netcommon
ansible.utils
Pro tip: instead of using branch pointers, like
main
, pin versions of Actions that you use to tagged versions or SHA-1 commit identifiers. This will make your workflows more secure and better reproducible, saving you from sudden and unpleasant surprises.
ansible-core
Git revision. See https://github.com/ansible/ansible/tags
and https://github.com/ansible/ansible/branches/all?query=stable- for
ideas. The repository this refers to can be changed with the
ansible-core-github-repository-slug
option. (DEFAULT: stable-2.14
)
The GitHub repository slug from which to check out ansible-core
(DEFAULT: ansible/ansible
)
The Codecov token to use when uploading coverage data. (OPTIONAL)
Controller Python version. This is only used for integration tests and
ansible-core 2.12 or later when target-python-version
is also specified
(DEFAULT: auto
)
Path to collection root relative to repository root (DEFAULT: .
)
A pre-checked out collection directory that's already on disk (OPTIONAL, substitutes getting the source from the remote Git repository if set, also this action will not attempt to mutate its contents)
Whether to collect and upload coverage information. Can be set to
always
, never
, and auto
. The value auto
will upload coverage
information except when pull-request-change-detection
is set to true
and the action is called from a Pull Request. (DEFAULT: auto
)
Note
Coverage is only generated for modules and plugins. If your collection does
not contain any modules or plugins, set this to never
to avoid errors in
the codecov upload step due to no coverage information being available.
A container image spawned by ansible-test
(OPTIONAL)
Committish to check out, unused if collection-src-directory
is set (OPTIONAL)
Whether the continue with the other integration tests when an error occurs.
If set to false
, will stop on the first error. When set to false
and
coverage=auto
, code coverage uploading will be disabled.
(DEFAULT: true
)
Whether to show diff output when calling actions in integration tests.
Actions can override this by specifying diff: false
or diff: true
.
(DEFAULT: true
)
Whether to retry the current integration test once when an error happens.
(DEFAULT: true
)
Environment Python version. The value auto
uses the maximum Python
version supported by the given ansible-core-version
(DEFAULT: auto
)
Extra command to invoke before ansible-test (OPTIONAL)
Whether to use change detection for pull requests. If set to true
, will
use change detection to determine changed files against the target branch,
and will not upload code coverage results. If the invocation is not from a
pull request, this option is ignored. Note that this requires
collection-src-directory
to be empty, or it has to be a git repository
checkout where collection-src-directory
/collection-root
ends with
ansible_collections/{namespace}/{name}
, or it has to be a git
repository checkout where collection-root
is .
. (DEFAULT: false
)
(DEPRECATED) Use origin-python-version
instead.
Comma-separated list of sanity tests to run. If not present, all applicable tests are run.
Comma-separated list of sanity tests to skip.
Allow running sanity tests that are disabled by default.
(DEFAULT: false
)
ansible-test
TARGET (OPTIONAL)
Target Python version (OPTIONAL)
ansible-test
subcommand (REQUIRED, Must be one of 'sanity', 'units'
or 'integration')
Test dependencies to install along with this collection (OPTIONAL)
Path to the auto-installed ansible-playbook
executable
Path to the auto-installed ansible-test
executable
Path to the auto-downloaded collection src directory
Detected collection FQCN
Detected collection name
Detected collection namespace
A comma-separated list of produced Cobertura XML coverage report file paths
The python-path
output value of the setup-python action
The actual value of origin-python-version
passed to the setup-python action
A comma-separated list of produced JUnit XML test result file paths
Check out the Data-Bene/ansible-test-versions-gh-action to explore a semi-automatic job matrix generation for testing your collections. This project is not maintained by us but it is a rather promising way of configuring your GitHub Actions CI/CD workflows.