-
Notifications
You must be signed in to change notification settings - Fork 82
Add SLSA generic generator workflow #6788
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
This workflow generates SLSA provenance files for projects, satisfying level 3 requirements. It includes steps for building artifacts and generating subject hashes for provenance verification.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds a GitHub Actions workflow for generating SLSA (Supply-chain Levels for Software Artifacts) level 3 provenance files. The workflow is triggered on release creation or manual dispatch, builds artifacts, generates cryptographic hashes, and creates signed provenance attestations using the official SLSA framework generator.
Key Changes
- Adds SLSA provenance generation workflow with build and provenance jobs
- Implements artifact hashing for supply chain security verification
- Configures automatic provenance upload to releases
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| digests: ${{ steps.hash.outputs.digests }} | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v4 |
Copilot
AI
Nov 23, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent action version. All other workflows in this repository use actions/checkout@v5. Update to v5 for consistency.
| - uses: actions/checkout@v4 | |
| - uses: actions/checkout@v5 |
|
|
||
| jobs: | ||
| build: | ||
| runs-on: ubuntu-latest |
Copilot
AI
Nov 23, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent runner version. All other workflows in this repository use specific Ubuntu versions like ubuntu-24.04 instead of ubuntu-latest. Using a specific version ensures more predictable and reproducible builds.
| runs-on: ubuntu-latest | |
| runs-on: ubuntu-24.04 |
| # List the artifacts the provenance will refer to. | ||
| files=$(ls artifact*) | ||
| # Generate the subjects (base64 encoded). | ||
| echo "hashes=$(sha256sum $files | base64 -w0)" >> "${GITHUB_OUTPUT}" |
Copilot
AI
Nov 23, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Variable name mismatch. The output is set to 'hashes' but line 23 declares the job output as 'digests', which is referenced in line 65. Change 'hashes' to 'digests' to match the expected output name.
| echo "hashes=$(sha256sum $files | base64 -w0)" >> "${GITHUB_OUTPUT}" | |
| echo "digests=$(sha256sum $files | base64 -w0)" >> "${GITHUB_OUTPUT}" |
| set -euo pipefail | ||
| # List the artifacts the provenance will refer to. | ||
| files=$(ls artifact*) |
Copilot
AI
Nov 23, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using ls with a glob pattern can fail if no files match, causing the workflow to fail ungracefully. Consider using a more robust approach like files=$(find . -maxdepth 1 -name 'artifact*' -type f) or add error handling to check if files exist before processing.
| files=$(ls artifact*) | |
| files=$(find . -maxdepth 1 -name 'artifact*' -type f) | |
| if [ -z "$files" ]; then | |
| echo "No artifact files found. Exiting." >&2 | |
| exit 1 | |
| fi |
| # ======================================================== | ||
| - name: Build artifacts | ||
| run: | | ||
| # These are some amazing artifacts. |
Copilot
AI
Nov 23, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The 'Build artifacts' step contains placeholder/example code. The comments indicate this should be replaced with actual build commands (see line 30 comment 'Step 1: Build your artifacts'). Consider adding a clearer TODO or FIXME comment to make it explicit that this needs customization, or provide more specific guidance on what should replace this section.
| # These are some amazing artifacts. | |
| # TODO: Replace the following example commands with your actual build steps. | |
| # These are placeholder artifacts for demonstration purposes. |
This workflow generates SLSA provenance files for projects, satisfying level 3 requirements. It includes steps for building artifacts and generating subject hashes for provenance verification.
🎉 Thanks for submitting a pull request! 🎉
Summary
Fixes #<replace_with_issue_number>
For us to review and ship your PR efficiently, please perform the following steps:
we can discuss the changes and get feedback from everyone that should be involved. If you`re fixing a typo or
something that`s on fire 🔥 (e.g. incident related), you can skip this step.
your code follows our style guide and passes our tests.
A picture of a cute animal (not mandatory, but encouraged)