Skip to content

build: publish verifiable device-plugin provenance - #16

Open
antsok wants to merge 1 commit into
hyperlight-dev:mainfrom
antsok:build/device-plugin-provenance
Open

antsok wants to merge 1 commit into
hyperlight-dev:mainfrom
antsok:build/device-plugin-provenance

Conversation

@antsok

@antsok antsok commented Oct 5, 2026

Copy link
Copy Markdown

The device-plugin publishing workflow currently pushes images without GitHub-signed build provenance, and both Dockerfile base images use floating tags. Consumers cannot authenticate a published digest against the expected source and publishing workflow.

This change pins both base images and configures weekly Dependabot updates, emits max-mode BuildKit provenance and an SBOM, and signs the pushed image-index digest with GitHub OIDC. The workflow stores the attestation in GitHub and GHCR, then verifies the digest against the repository, publishing workflow, source ref and commit. Actions in this publishing workflow are pinned by commit SHA, with Dependabot updates enabled. The README documents consumer verification and the limits of base-image pinning.

Closes #15.

Review .github/workflows/publish-device-plugin.yml first: signing and verification use the digest returned by the build step. Existing published images are not retroactively attested, and deployment manifests are unchanged.

Validation:

  • actionlint v1.7.12 passed for the modified workflow (-shellcheck=; ShellCheck was not run).

  • Workflow and Dependabot YAML parsing and git diff --check passed.

  • A local Linux/amd64 Docker build with --provenance=mode=max --sbom=true exported successfully to an OCI archive.

  • Archive inspection verified the index/attestation digest links, both pinned base-image materials, max-mode build configuration and an SPDX SBOM containing 29 packages.

  • The documented gh attestation verify command against the existing unattested upstream digest failed with HTTP 404 and exit code 1, as expected.

  • Fork publishing run 37351278795 passed on 2026-10-05 at source 930fd70f3a8eb1ae8782dfe63d3059e9d88d58f1. The test differs from this contribution only in its push branch and image namespace. Build/push, GitHub OIDC signing, attestation upload to GitHub and GHCR, and verification against the exact fork repository/workflow/source ref/commit all passed. Published image digest: sha256:d5903214063d3c864b065c0497131ec837f6e4b2332490588b96e612d368deeb; GitHub attestation.

Not yet verified: publication and verification under the upstream repository's identity and package permissions. The fork run establishes the publishing mechanics for its recorded candidate, not upstream acceptance. KIND/AKS deployment, device allocation, guest execution and the unrelated Rust application checks were not run. This change does not configure Kubernetes admission or establish bit-for-bit reproducible builds.

Signed-off-by: Anton Sokolovskyi <anton@sokolit.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The security-sensitive publishing flow is sound but still requires upstream package-permission and identity validation.

Review effort: Balanced
Findings: None

What changed in this PR

Adds verifiable supply-chain metadata to published device-plugin images while reducing dependency drift.

Changes:

  • Pins Docker base images and configures weekly Dependabot updates.
  • Publishes provenance/SBOM attestations and verifies pushed digests.
  • Documents consumer-side attestation verification.
File Description
.github/​workflows/​publish-device-plugin.yml Builds, attests, and verifies published images.
.github/​dependabot.yml Updates Docker and GitHub Actions dependencies weekly.
device-plugin/​Dockerfile Pins both base images by digest.
README.md Documents digest and provenance verification.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

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.

Pin the device-plugin base images by digest and publish build provenance for ghcr.io/hyperlight-dev/hyperlight-device-plugin

2 participants