Repository navigation
Conversation
Signed-off-by: Anton Sokolovskyi <anton@sokolit.com>
There was a problem hiding this comment.
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.ymlfirst: signing and verification use the digest returned by the build step. Existing published images are not retroactively attested, and deployment manifests are unchanged.Validation:
actionlintv1.7.12 passed for the modified workflow (-shellcheck=; ShellCheck was not run).Workflow and Dependabot YAML parsing and
git diff --checkpassed.A local Linux/amd64 Docker build with
--provenance=mode=max --sbom=trueexported 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 verifycommand 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.