Skip to content

ci(control-tests): run the suite against both auditor images#68

Merged
stevebeattie merged 1 commit into
chainguard-dev:mainfrom
stevebeattie:ci/control-tests-both-images
Jun 18, 2026
Merged

ci(control-tests): run the suite against both auditor images#68
stevebeattie merged 1 commit into
chainguard-dev:mainfrom
stevebeattie:ci/control-tests-both-images

Conversation

@stevebeattie

Copy link
Copy Markdown
Member

Why

After #67 made the public Chainguard cinc-auditor image the default, the
per-PR control-tests gate runs against only one image. The Chainguard image and
the upstream cincproject/auditor image are built independently and can diverge
— the nonroot-vs-root default user and the /usr/lib-vs-/opt bundle layout
already surfaced in cinc-check (#67). The gate should catch a profile regression
on either image, not just the primary.

What

Matrix the control-tests test job over both images:

  • cgr.dev/chainguard/cinc-auditor:latest (primary)
  • cincproject/auditor:latest (upstream)

fail-fast: false so one image's failure doesn't mask the other; the job name
shows which image (test (chainguard) / test (cincproject)), and
CINC_AUDITOR_IMAGE is taken from the matrix (a static workflow literal — no
untrusted input).

The tooling is already image-default-agnostic after #67 (every docker
invocation forces --user 0:0; cinc-check scans an empty rootfs), so both legs
run unchanged.

scan-smoke stays single-image deliberately: it exercises the scan pipeline
(export / overlay / live / find), which is image-agnostic, so doubling its
8-entry matrix adds little signal for a lot of weekly cost.

Verification

Both legs verified locally: make cinc-check and a control spec pass on each of
cgr.dev/chainguard/cinc-auditor:latest and cincproject/auditor:latest (the
full chainguard suite is 186 examples, 0 failures). actionlint + zizmor clean.

🤖 Generated with Claude Code

Why: the Chainguard cinc-auditor image (now the primary, per the default switch)
and the upstream cincproject/auditor image are built independently and can
diverge — e.g. the nonroot-vs-root default user and the /usr/lib-vs-/opt bundle
layout already surfaced in cinc-check. The per-PR control-tests gate should
catch a profile regression on either image, not just the primary.

What: matrix the control-tests `test` job over both images (chainguard primary +
cincproject), fail-fast: false so one image's failure doesn't mask the other;
the job name shows which image, and CINC_AUDITOR_IMAGE is taken from the matrix.
The tooling is already image-default-agnostic (every docker invocation forces
--user 0:0; cinc-check scans an empty rootfs), so both legs run unchanged.

scan-smoke stays single-image: it exercises the scan pipeline (export/overlay/
live/find), which is image-agnostic, so doubling its 8-entry matrix adds little
signal for a lot of weekly cost.

Verified both legs locally: make cinc-check and a control spec pass on each of
cgr.dev/chainguard/cinc-auditor:latest and cincproject/auditor:latest (the full
chainguard suite is 186 examples, 0 failures).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@stevebeattie stevebeattie merged commit 3bcd26e into chainguard-dev:main Jun 18, 2026
8 checks passed
@stevebeattie stevebeattie deleted the ci/control-tests-both-images branch June 18, 2026 04:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant