Skip to content

feat(supply-chain): add the scan every repository runs as a reusable workflow - #20

Merged
Nain9Dev merged 1 commit into
mainfrom
feat/supply-chain-workflow
Oct 15, 2026
Merged

Nain9Dev merged 1 commit into
mainfrom
feat/supply-chain-workflow

Conversation

@Nain9Dev

Copy link
Copy Markdown
Member

Summary

The job that runs zizmor over the workflows and gitleaks over the history is copied in every
repository of the organisation (contrast3d-platform, contrast3d-bot, gha-local-runners and this
one), so raising a scanner digest means a change in each. This makes it one reusable workflow.

  • .github/workflows/supply-chain.yml: the same two steps as today, images pinned by digest inside the
    file. Inputs: runs-on (a JSON label or array, default "ubuntu-latest", as the other workflows) and
    paths (what zizmor audits, default .github/). The path goes through an environment variable, not
    into the script. The job runs with contents: read and a ten-minute limit.
  • tests/supply-chain.test.sh (22 checks): every image pinned by digest, the zizmor and gitleaks flags
    that decide what is scanned (--format github, --redact, --exit-code 1, the history of this
    commit), the read-only mount, the checkout without credentials, and that no input can change an image.
  • This repository's own CI calls it as a fixture on the real event, and runs the new test.
  • README entry. zizmor.yml: the self-repository ignores follow the new line numbers.

Consumers adopt it by repointing their copy of the job at this file with a full SHA and a release
comment: separate pull requests, after a release tag.

Verification

  • bash tests/supply-chain.test.sh: 22 ok; the test failed first (the workflow did not exist).
    actionlint and zizmor clean; the Python suite passes.
  • The scan itself runs for real in this pull request's CI, through the fixture caller.

…workflow

The job that runs zizmor over the workflows and gitleaks over the history
was copied into every repository, so raising a scanner digest meant a
change in each. It is now one reusable workflow with the digests pinned
inside, taking only the runner and the paths zizmor audits; this
repository calls it as its own fixture. The zizmor path goes through an
environment variable, not into the script. tests/supply-chain.test.sh
checks that every image stays pinned by digest and that the flags that
decide what is scanned stay.
@Nain9Dev
Nain9Dev merged commit 130bf27 into main Oct 15, 2026
5 checks passed
@Nain9Dev
Nain9Dev deleted the feat/supply-chain-workflow branch October 15, 2026 17:50
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