Skip to content

Commit 06cc6c8

Browse files
authored
Merge pull request #73 from fluxcd/image-provenance
Generate provenance for container images
2 parents 0b2adc9 + dc5a1d9 commit 06cc6c8

File tree

2 files changed

+40
-6
lines changed

2 files changed

+40
-6
lines changed

.github/workflows/release.yaml

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ jobs:
2121
release:
2222
outputs:
2323
hashes: ${{ steps.hash.outputs.hashes }}
24+
image_url: ${{ steps.hash.outputs.image_url }}
25+
image_digest: ${{ steps.hash.outputs.image_digest }}
2426
runs-on: ubuntu-latest
2527
permissions:
2628
contents: write # needed to write releases
@@ -72,6 +74,7 @@ jobs:
7274
type=raw,value=${{ steps.prep.outputs.version }}
7375
- name: Docker push
7476
uses: docker/build-push-action@2eb1c1961a95fc15694676618e422e8ba1d63825 # v4.1.1
77+
id: build-push
7578
with:
7679
sbom: true
7780
provenance: true
@@ -106,8 +109,13 @@ jobs:
106109
107110
hashes=$(echo $ARTIFACTS | jq --raw-output '.[] | {name, "digest": (.extra.Digest // .extra.Checksum)} | select(.digest) | {digest} + {name} | join(" ") | sub("^sha256:";"")' | base64 -w0)
108111
echo "hashes=$hashes" >> $GITHUB_OUTPUT
112+
113+
image_url=fluxcd/${{ env.CONTROLLER }}:${{ steps.prep.outputs.version }}
114+
image_digest=${{ steps.build-push.outputs.digest }}
115+
echo "image_url=$image_url" >> $GITHUB_OUTPUT
116+
echo "image_digest=$image_digest" >> $GITHUB_OUTPUT
109117
110-
provenance:
118+
release-provenance:
111119
needs: [release]
112120
permissions:
113121
actions: read # To read the workflow path.
@@ -117,3 +125,31 @@ jobs:
117125
with:
118126
base64-subjects: "${{ needs.release.outputs.hashes }}"
119127
upload-assets: true
128+
129+
dockerhub-provenance:
130+
needs: [release]
131+
permissions:
132+
actions: read # To read the workflow path.
133+
id-token: write # To sign the provenance.
134+
contents: write # To add assets to the release.
135+
uses: slsa-framework/slsa-github-generator/.github/workflows/[email protected]
136+
with:
137+
image: ${{ needs.release.outputs.image_url }}
138+
digest: ${{ needs.release.outputs.image_digest }}
139+
registry-username: fluxcdbot
140+
secrets:
141+
registry-password: ${{ secrets.DOCKER_FLUXCD_PASSWORD }}
142+
143+
ghcr-provenance:
144+
needs: [release]
145+
permissions:
146+
actions: read # To read the workflow path.
147+
id-token: write # To sign the provenance.
148+
contents: write # To add assets to the release.
149+
uses: slsa-framework/slsa-github-generator/.github/workflows/[email protected]
150+
with:
151+
image: ghcr.io/${{ needs.release.outputs.image_url }}
152+
digest: ${{ needs.release.outputs.image_digest }}
153+
registry-username: fluxcdbot
154+
secrets:
155+
registry-password: ${{ secrets.GHCR_TOKEN }}

.goreleaser.yaml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ builds:
66
release:
77
prerelease: auto
88
footer: |
9-
## Signed images
9+
## Container images
1010
11-
Verify and pull the container image:
12-
1311
```
14-
cosign verify ghcr.io/fluxcd/{{.ProjectName}}:{{.Tag}}
15-
docker pull ghcr.io/fluxcd/{{.ProjectName}}:{{.Tag}}
12+
docker.io/fluxcd/{{.ProjectName}}:{{.Tag}}
13+
ghcr.io/fluxcd/{{.ProjectName}}:{{.Tag}}
1614
```
1715
1816
Supported architectures: `linux/amd64`, `linux/arm64` and `linux/arm/v7`.

0 commit comments

Comments
 (0)