Use DCI on Podman to certify containers
Back to all posts

Container certification has never been easier! With the new dci-pipeline-podman approach, you can run Red Hat container certification tests with just a simple dci pipeline configuration. No complex setup required, just install one package and create a minimal pipeline file.

What you need

The beauty of this approach is its simplicity:

For detailed DCI setup and configuration, see our comprehensive guides: - Introduction to Red Hat Distributed CI - Certification tests for OpenShift containers and operators

Quick setup

1. Install dci-pipeline-podman

# On your RHEL jumphost
sudo dnf install dci-pipeline-podman

That's it! All DCI tools are now available in containers, managed automatically. I was tested with RHEL 8/9.

2. Create inventory file

Your inventory must include the jumphost because tasks execute on this host via SSH:

# ~/my-certification/inventories/jumphost.yml
[jumphost]
jumphost

Note: Not compatible with ansible_connection=local

Note: The jumphost must be able to connect to itself via SSH. This means passwordless SSH (e.g., using SSH keys) from the jumphost to itself must be set up and working. This is required because DCI executes tasks over SSH, even when targeting the local host.

3. Minimal pipeline configuration

Create this simple pipeline file for Pyxis-only container certification:

# ~/my-certification/pipelines/container-certification-pipeline.yml
---
- name: container-certification
  stage: pyxis-only
  ansible_playbook: /usr/share/dci-openshift-app-agent/dci-openshift-app-agent.yml
  ansible_inventory: ~/my-certification/inventories/jumphost.yml
  dci_credentials: ~/.config/dci-pipeline/dci_credentials.yml
  ansible_extravars:
    # Pyxis API credentials
    #pyxis_apikey_path: ~/.config/dci-pipeline/pyxis-apikey.txt"
    #organization_id: "YOUR_ORG_ID"

    # Registry credentials (if needed)
    #partner_creds: ~/.config/dci-pipeline/partner_config.json

    # Your kubeconfig file to run the tests
    kubeconfig_path: ~/my-certification/kubeconfig

    # Containers to certify
    preflight_containers_to_certify:
      - container_image: "quay.io/myorg/myapp:v1.0.0"
        create_container_project: true
        short_description: "My application container for certification"
        pyxis_product_lists:
          - "YOUR_PRODUCT_LIST_ID"

Running certification

Execute your pipeline:

dci-pipeline-podman ~/my-certification/pipelines/container-certification-pipeline.yml

What happens

The pipeline automatically:

  1. Pulls your container using Podman on the jumphost
  2. Runs Preflight tests in a containerized environment
  3. Creates certification project in Red Hat Partner Connect (if configured)
  4. Submits results directly to Pyxis API
  5. Generates reports available in DCI UI

Multiple containers

Certify multiple containers in one run:

preflight_containers_to_certify:
  - container_image: "quay.io/myorg/frontend:v1.0.0"
    create_container_project: true
    short_description: "Frontend application"
    pyxis_product_lists: ["FRONTEND_PRODUCT_LIST"]
  - container_image: "quay.io/myorg/backend:v1.0.0"
    create_container_project: true
    short_description: "Backend API"
    pyxis_product_lists: ["BACKEND_PRODUCT_LIST"]
  - container_image: "quay.io/myorg/worker:v1.0.0"
    pyxis_container_identifier: "EXISTING_PROJECT_ID"  # Use existing project

Debugging

Check results in the DCI UI:

Next steps

For advanced scenarios and detailed troubleshooting, see Exploring Certification Test Suites Integrated in DCI or DCI Documentation