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.yml completeness and correctness
  • Documentation checks — module/plugin documentation standards
  • Sanity tests — ansible-test sanity compliance
  • 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

Featurev1.xv2.0.0
Ansible-core versions tested2.15-2.172.17-2.20
Python versions3.9-3.113.10-3.13
Parallel test execution❌✅
Detailed error reportsBasicRich markdown summaries
Custom config supportLimitedFull .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

FailureFix
Missing DOCUMENTATION in moduleAdd YAML doc string to all modules
Invalid galaxy.yml versionUse semantic versioning (x.y.z)
Banned import (e.g., requests)Use ansible.module_utils.urls instead
Missing RETURN documentationDocument all return values
No EXAMPLES sectionAdd at least one working example
Incompatible licenseUse GPL-3.0-or-later or Apache-2.0
Runtime metadata missingAdd 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

WithoutWith
Submit to Automation Hub → wait days for feedbackGet results in minutes on every PR
Fix issues → resubmit → wait againFix immediately, submit once
Manual ansible-test runsAutomated in CI/CD
Forget to test against multiple versionsMatrix 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

IssueSolution
Workflow not foundUse uses: ansible/certification-checker/.github/workflows/check.yml@v2.0.0
Permission deniedEnsure workflow has contents: read permission
TimeoutLarge collections may need longer timeout; check parallel execution settings
False positivesFile issue on the certification-checker repo
Version mismatchPin to @v2.0.0 tag, not @main

Best Practices

  1. Run on every PR — catch issues before merge
  2. Pin the workflow version — @v2.0.0 not @main
  3. Fix all warnings too — warnings become errors in future versions
  4. Test multiple ansible-core versions — ensure broad compatibility
  5. Run locally first — ansible-test sanity --docker for quick feedback
  6. 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.