Introduction
Red Hat released version 2.0.0 of the Partner Certification Checker GitHub workflow in May 2026. This reusable GitHub Actions workflow lets collection maintainers run the same certification tests Red Hat uses — directly in their CI/CD pipeline. Catch certification failures early, before submitting to Automation Hub.
What It Does
The certification checker validates your Ansible collection against Red Hat's partner certification requirements:
- Metadata validation —
galaxy.ymlcompleteness and correctness - Documentation checks — module/plugin documentation standards
- Sanity tests —
ansible-test sanitycompliance - License verification — acceptable open source licenses
- Import checks — no banned imports or dependencies
- Runtime compatibility — works with supported ansible-core versions
- Plugin standards — return values, option documentation, examples
Quick Start
# .github/workflows/certification.yml
name: Certification Check
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
certify:
uses: ansible/certification-checker/.github/workflows/check.yml@v2.0.0
with:
collection_path: .
That's it — one workflow call runs the full certification suite.
What's New in v2.0.0
| Feature | v1.x | v2.0.0 |
|---|---|---|
| Ansible-core versions tested | 2.15-2.17 | 2.17-2.20 |
| Python versions | 3.9-3.11 | 3.10-3.13 |
| Parallel test execution | ❌ | ✅ |
| Detailed error reports | Basic | Rich markdown summaries |
| Custom config support | Limited | Full .certification.yml |
| Reusable workflow | ❌ | ✅ (uses: syntax) |
Configuration
# .certification.yml (in collection root)
---
# Skip specific checks if needed
skip_checks:
- import-check # Only if you have a documented exception
# Target specific ansible-core versions
ansible_core_versions:
- "2.18"
- "2.19"
- "2.20"
# Python versions to test
python_versions:
- "3.11"
- "3.12"
- "3.13"
Full Workflow Example
name: Collection CI
on:
push:
branches: [main, develop]
pull_request:
jobs:
# Run your own tests first
unit-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install ansible-core
- run: ansible-test units --docker
# Then run certification checks
certification:
needs: unit-tests
uses: ansible/certification-checker/.github/workflows/check.yml@v2.0.0
with:
collection_path: .
# Integration tests
integration:
needs: certification
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install ansible-core
- run: ansible-test integration --docker
Common Certification Failures
| Failure | Fix |
|---|---|
Missing DOCUMENTATION in module | Add YAML doc string to all modules |
Invalid galaxy.yml version | Use semantic versioning (x.y.z) |
Banned import (e.g., requests) | Use ansible.module_utils.urls instead |
Missing RETURN documentation | Document all return values |
No EXAMPLES section | Add at least one working example |
| Incompatible license | Use GPL-3.0-or-later or Apache-2.0 |
| Runtime metadata missing | Add meta/runtime.yml with requires_ansible |
Pre-Submission Checklist
# Run locally before pushing
ansible-test sanity --docker
ansible-test units --docker
# Check galaxy.yml
cat galaxy.yml # Verify namespace, name, version, license, dependencies
# Check meta/runtime.yml
cat meta/runtime.yml # Verify requires_ansible version range
# Verify documentation
ansible-doc -l --playbook-dir . | grep your_module_name
Why Use the Workflow
| Without | With |
|---|---|
| Submit to Automation Hub → wait days for feedback | Get results in minutes on every PR |
| Fix issues → resubmit → wait again | Fix immediately, submit once |
Manual ansible-test runs | Automated in CI/CD |
| Forget to test against multiple versions | Matrix testing built-in |
Collection Structure for Certification
my_collection/
├── galaxy.yml # Collection metadata
├── meta/
│ └── runtime.yml # Ansible version requirements
├── plugins/
│ └── modules/
│ └── my_module.py # DOCUMENTATION + EXAMPLES + RETURN
├── roles/
├── tests/
│ ├── sanity/
│ ├── unit/
│ └── integration/
├── docs/
├── changelogs/
│ └── changelog.yaml
├── LICENSE # GPL-3.0+ or Apache-2.0
└── .certification.yml # Optional config
Troubleshooting
| Issue | Solution |
|---|---|
| Workflow not found | Use uses: ansible/certification-checker/.github/workflows/check.yml@v2.0.0 |
| Permission denied | Ensure workflow has contents: read permission |
| Timeout | Large collections may need longer timeout; check parallel execution settings |
| False positives | File issue on the certification-checker repo |
| Version mismatch | Pin to @v2.0.0 tag, not @main |
Best Practices
- Run on every PR — catch issues before merge
- Pin the workflow version —
@v2.0.0not@main - Fix all warnings too — warnings become errors in future versions
- Test multiple ansible-core versions — ensure broad compatibility
- Run locally first —
ansible-test sanity --dockerfor quick feedback - Read the certification guide — https://access.redhat.com/documentation/en-us/red_hat_ansible_automation_platform/
Conclusion
The Partner Certification Checker v2.0.0 workflow brings Red Hat's certification tests into your GitHub Actions pipeline. Run it on every PR to catch documentation gaps, import violations, and compatibility issues before you submit to Automation Hub. One uses: line replaces days of back-and-forth with certification reviews.