@ -9,6 +9,10 @@ permissions:
jobs:
release-flux-cli:
outputs:
hashes : ${{ steps.slsa.outputs.hashes }}
image_url : ${{ steps.slsa.outputs.image_url }}
image_digest : ${{ steps.slsa.outputs.image_digest }}
runs-on : ubuntu-latest
permissions:
contents : write # needed to write releases
@ -74,6 +78,7 @@ jobs:
env:
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
- name : Run GoReleaser
id : run-goreleaser
uses : goreleaser/goreleaser-action@336e29918d653399e599bfca99fadc1d7ffbc9f7 # v4.3.0
with:
version : latest
@ -82,6 +87,22 @@ jobs:
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
HOMEBREW_TAP_GITHUB_TOKEN : ${{ secrets.BOT_GITHUB_TOKEN }}
AUR_BOT_SSH_PRIVATE_KEY : ${{ secrets.AUR_BOT_SSH_PRIVATE_KEY }}
- name : Generate SLSA metadata
id : slsa
env:
ARTIFACTS : "${{ steps.run-goreleaser.outputs.artifacts }}"
run : |
set -euo pipefail
hashes=$(echo $ARTIFACTS | jq --raw-output '.[] | {name, "digest": (.extra.Digest // .extra.Checksum)} | select(.digest) | {digest} + {name} | join(" ") | sub("^sha256:";"")' | base64 -w0)
echo "hashes=$hashes" >> $GITHUB_OUTPUT
image_url=fluxcd/flux-cli:${{ steps.prep.outputs.version }}
echo "image_url=$image_url" >> $GITHUB_OUTPUT
image_digest=$(docker buildx imagetools inspect ${image_url} --format '{{json .}}' | jq -r .manifest.digest)
echo "image_digest=$image_digest" >> $GITHUB_OUTPUT
release-flux-manifests:
runs-on : ubuntu-latest
needs : release-flux-cli
@ -148,3 +169,43 @@ jobs:
flux tag artifact oci://docker.io/fluxcd/flux-manifests:${{ steps.prep.outputs.version }} \
--tag latest
release-provenance:
needs : [ release-flux-cli]
permissions:
actions : read # for detecting the Github Actions environment.
id-token : write # for creating OIDC tokens for signing.
contents : write # for uploading attestations to GitHub releases.
uses : slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.7.0
with:
provenance-name : "provenance.intoto.jsonl"
base64-subjects : "${{ needs.release-flux-cli.outputs.hashes }}"
upload-assets : true
dockerhub-provenance:
needs : [ release-flux-cli]
permissions:
actions : read # for detecting the Github Actions environment.
id-token : write # for creating OIDC tokens for signing.
packages : write # for uploading attestations.
uses : slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.7.0
with:
image : ${{ needs.release-flux-cli.outputs.image_url }}
digest : ${{ needs.release-flux-cli.outputs.image_digest }}
registry-username : fluxcdbot
secrets:
registry-password : ${{ secrets.DOCKER_FLUXCD_PASSWORD }}
ghcr-provenance:
needs : [ release-flux-cli]
permissions:
actions : read # for detecting the Github Actions environment.
id-token : write # for creating OIDC tokens for signing.
packages : write # for uploading attestations.
uses : slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.7.0
with:
image : ghcr.io/${{ needs.release-flux-cli.outputs.image_url }}
digest : ${{ needs.release-flux-cli.outputs.image_digest }}
registry-username : fluxcdbot
secrets:
registry-password : ${{ secrets.GHCR_TOKEN }}