-
Notifications
You must be signed in to change notification settings - Fork 54
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build: adding provenance generation to ruby release-please workflow
- Loading branch information
1 parent
42ccae5
commit f4aded1
Showing
5 changed files
with
79 additions
and
1 deletion.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,6 +14,8 @@ jobs: | |
permissions: | ||
id-token: write | ||
contents: read | ||
outputs: | ||
gem-hash: ${{ steps.publish.outputs.gem-hash}} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
|
@@ -34,3 +36,17 @@ jobs: | |
uses: ./.github/actions/publish | ||
with: | ||
dry_run: ${{ inputs.dry_run }} | ||
|
||
release-provenance: | ||
needs: [ 'build-publish' ] | ||
runs-on: ubuntu-latest | ||
permissions: | ||
actions: read | ||
id-token: write | ||
contents: write | ||
uses: slsa-framework/slsa-github-generator/.github/workflows/[email protected] | ||
with: | ||
base64-subjects: "${{ needs.build-publish.outputs.gem-hash }}" | ||
upload-assets: true | ||
upload-tag-name: TBD | ||
|
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,6 +12,10 @@ jobs: | |
id-token: write # Needed if using OIDC to get release secrets. | ||
contents: write # Contents and pull-requests are for release-please to make releases. | ||
pull-requests: write | ||
outputs: | ||
release-created: ${{ steps.release.outputs.release_created }} | ||
upload-tag-name: ${{ steps.release.outputs.tag_name }} | ||
gem-hash: ${{ steps.publish.outputs.gem-hash}} | ||
steps: | ||
- uses: google-github-actions/release-please-action@v3 | ||
id: release | ||
|
@@ -41,6 +45,7 @@ jobs: | |
if: ${{ steps.release.outputs.releases_created }} | ||
|
||
- uses: ./.github/actions/publish | ||
id: publish | ||
if: ${{ steps.release.outputs.releases_created }} | ||
with: | ||
dry_run: false | ||
|
@@ -49,3 +54,17 @@ jobs: | |
if: ${{ steps.release.outputs.releases_created }} | ||
with: | ||
token: ${{secrets.GITHUB_TOKEN}} | ||
|
||
release-provenance: | ||
needs: [ 'release-package' ] | ||
if: ${{ needs.release-package.outputs.release-created }} | ||
runs-on: ubuntu-latest | ||
permissions: | ||
actions: read | ||
id-token: write | ||
contents: write | ||
uses: slsa-framework/slsa-github-generator/.github/workflows/[email protected] | ||
with: | ||
base64-subjects: "${{ needs.release-package.outputs.gem-hash }}" | ||
upload-assets: true | ||
upload-tag-name: ${{ needs.release-package.outputs.upload-tag-name }} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
## Verifying SDK build provenance with the SLSA framework | ||
|
||
LaunchDarkly uses the [SLSA framework](https://slsa.dev/spec/v1.0/about) (Supply-chain Levels for Software Artifacts) to help developers make their supply chain more secure by ensuring the authenticity and build integrity of our published SDK packages. | ||
|
||
As part of [SLSA requirements for level 3 compliance](https://slsa.dev/spec/v1.0/requirements), LaunchDarkly publishes provenance about our SDK package builds using [GitHub's generic SLSA3 provenance generator](https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/generic/README.md#generation-of-slsa3-provenance-for-arbitrary-projects) for distribution alongside our packages. These attestations are available for download from the GitHub release page for the release version under Assets > `multiple-provenance.intoto.jsonl`. | ||
|
||
To verify SLSA provenance attestations, we recommend using [slsa-verifier](https://github.com/slsa-framework/slsa-verifier). Example usage for verifying SDK packages is included below: | ||
|
||
``` | ||
# Download gem | ||
$ gem fetch launchdarkly-server-sdk | ||
# Download provenance from Github release | ||
$ curl --location -O \ | ||
https://github.com/launchdarkly/ruby-server-sdk/releases/download/VERSION/multiple.intoto.jsonl | ||
# Run slsa-verifier to verify provenance against package artifacts | ||
$ slsa-verifier verify-artifact \ | ||
--provenance-path multiple-provenance.intoto.jsonl \ | ||
--source-uri github.com/launchdarkly/ruby-server-sdk \ | ||
launchdarkly-server-sdk-VERSION.gem | ||
TBD OUTPUT | ||
``` | ||
|
||
Alternatively, to verify the provenance manually, the SLSA framework specifies [recommendations for verifying build artifacts](https://slsa.dev/spec/v1.0/verifying-artifacts) in their documentation. | ||
|
||
**Note:** These instructions do not apply when building our SDKs from source. |
This file contains 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