Skip to content

ci: publish the attestation bundle with each release #87

Closed

Description

@groupsky

A release has two tarballs and SHA256SUMS today. The build provenance attestation is only in GitHub's attestation store. Without --bundle, gh attestation verify needs a GitHub login, even for a public repository (cli/cli#11803, seen 2026-10-17). A broker host should have no GitHub login. With the bundle as a file, gh attestation verify --bundle needs no login. It still gets the Sigstore trusted root online.

The installer and nodkey update need this file (issue to follow).

actions/attest has a bundle-path output. It is one Sigstore bundle for all subjects of the step, so one file covers both tarballs (actions/attest outputs).

Done when

  • The attest step in the publish job has an id. The job saves its bundle-path file as nodkey_<version>.sigstore.json and uploads it with the tarballs, before the release is published. After that, an immutable release takes no more files.
  • publish gets no new permission and still runs no code from the repository. Values from needs.*.outputs reach the shell only through env:, never as ${{ }} inside run:.
  • docs/releasing.md lists the new file. Its "Verify a download" section shows the check with --bundle, which needs no login, next to the check without it.
  • docs/releasing.md says that 0.1.0 has no bundle file.
  • The first release after this has the file, and gh attestation verify --bundle passes with it on a machine with no GitHub login. Tick this after that release.

Activity

  1. groupsky commented on Oct 16, 2026

    @groupsky
    ContributorAuthor

    The installer and nodkey update are #88.

  2. groupsky commented on Oct 16, 2026

    @groupsky
    ContributorAuthor

    Done in #91 (f6e47bb), except the last box. It waits for the next release: check that the release has nodkey_<version>.sigstore.json and that gh attestation verify --bundle passes with it on a machine with no GitHub login. The publish job now also runs that check before it publishes.

  3. groupsky commented on Oct 17, 2026

    @groupsky
    ContributorAuthor

    Checked on 2026-10-17 with the 0.2.0 release (published 06:18:45 UTC, immutable). It has nodkey_0.2.0.sigstore.json. On a machine with no GitHub login (empty GH_CONFIG_DIR, no token), gh 2.96.0 ran the three steps of docs/releasing.md: sha256sum -c printed OK, gh attestation verify --bundle exited 0, and the name check printed nodkey_0.2.0_linux_amd64.tar.gz. ./nodkey version --offline printed nodkey 0.2.0. The publish job had run the same check before it published.

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

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions