Skip to content

Pin sigstore/cosign-installer instead of tracking @main (all 15 operators) #18

Description

@whg517

What

Every operator's release workflow tracks the action's default branch:

- name: Setup Cosign
  uses: sigstore/cosign-installer@main

All 15 repositories. It is the only unpinned action in these workflows —
every other one is pinned to a release:

actions/checkout@v6            docker/login-action@v4
actions/setup-go@v6            docker/setup-buildx-action@v4
actions/setup-python@v6        docker/setup-qemu-action@v4
azure/setup-helm@v5            golangci/golangci-lint-action@v9
helm/chart-testing-action@v2.8.0   helm/kind-action@v1.14.0
sigstore/cosign-installer@main     ← the exception

Why it matters — a concrete example

The signature storage format changed underneath the release process without
anyone noticing
.

Older cosign published signatures as a separate sha256-<digest>.sig tag.
Current cosign attaches them as OCI referrers instead:

GET /v2/zncdatadev/doris-operator/referrers/sha256:0cad44c0...
→ application/vnd.dev.sigstore.bundle.v0.3+json

commons-operator's registry still shows nine .sig tags, the newest dated
2025-10-06. That date is not when signing stopped — it is when the tooling
silently switched schemes, because @main picked up a new major version between
releases.

Signing works correctly today; all 15 0.4.0 images pass cosign verify. But
the behaviour change was invisible until someone went looking, and it did briefly
lead to a false "signatures are missing" report during 0.4.0 verification.

The general risk: an unpinned action in a release path means a third party's
merge to main can alter what a tagged, signed release produces — with no diff
in this org to review, and no way to reproduce an old release's exact behaviour.

Suggested change

Pin like everything else. Latest release is v4.1.2 (2026-05-07):

- name: Setup Cosign
  uses: sigstore/cosign-installer@v4

Worth applying across all 15 repos in one pass, alongside dependabot coverage so
upgrades arrive as reviewable PRs rather than silently.

Context

Found while verifying 0.4.0 release artifacts. Not a defect in the current
release — the images are signed and verify correctly.

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions