@@ -189,80 +189,29 @@ jobs:
189189 VERSION : ${{ steps.ref-name.outputs.value }}
190190 run : scripts/buildko.sh
191191
192- attest :
192+ attest-and-sbom-ko :
193193 needs : build-images-ko
194194 runs-on : linux-amd64-cpu32
195195 permissions :
196+ contents : read
196197 packages : write
197198 id-token : write
198199 attestations : write
199200 strategy :
200201 matrix :
201202 image : ${{ fromJson(needs.build-images-ko.outputs.images) }}
202203 steps :
203- - name : Authenticate to GHCR
204- uses : docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
205- with :
206- registry : ghcr.io
207- username : ${{ github.actor }}
208- password : ${{ secrets.GITHUB_TOKEN }}
209-
210- - name : Attest build provenance
211- id : attest
212- uses : actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
213- with :
214- subject-name : ${{ matrix.image.name }}
215- subject-digest : ${{ matrix.image.digest }}
216- push-to-registry : true
217-
218- sbom-ko :
219- needs : build-images-ko
220- runs-on : linux-amd64-cpu32
221- permissions :
222- contents : read
223- id-token : write # required for Cosign keyless signing
224- packages : write # needed to push attestations to GHCR
225- security-events : write # only needed if you also upload SARIF somewhere
226- strategy :
227- matrix :
228- image : ${{ fromJson(needs.build-images-ko.outputs.images) }}
229- steps :
230- - name : Authenticate to GHCR
231- uses : docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
204+ - name : Checkout Code
205+ uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
232206 with :
233- registry : ghcr.io
234- username : ${{ github.actor }}
235- password : ${{ secrets.GITHUB_TOKEN }}
236-
237- - name : Derive safe filename
238- id : name
239- shell : bash
240- run : |
241- IMAGE="${{ matrix.image.name }}"
242- SAFE="$(basename "${IMAGE%%:*}")" # strip tag if present, then basename
243- echo "safe=$SAFE" >> "$GITHUB_OUTPUT"
207+ ref : ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag || github.ref }}
244208
245- - name : Generate SBOM
246- uses : anchore/ sbom-action@8e94d75ddd33f69f691467e42275782e4bfefe84 # v0.20.9
209+ - name : Generate SBOM and Attest
210+ uses : ./.github/actions/ sbom-and-attest
247211 with :
248- image : " ${{ matrix.image.name }}@${{ matrix.image.digest }}"
249- format : cyclonedx-json
250- output-file : sbom-${{ steps.name.outputs.safe }}.cdx.json
251- upload-artifact : true # also uploads to the workflow run
252- upload-release-assets : auto # 'auto' == assets on tags
253-
254- - name : Install Cosign
255- uses : sigstore/cosign-installer@faadad0cce49287aee09b3a48701e75088a2c6ad # v4.0.0
256-
257- - name : Cosign SBOM attestation
258- env :
259- COSIGN_EXPERIMENTAL : " 1"
260- run : |
261- cosign attest \
262- --yes \
263- --predicate sbom-${{ steps.name.outputs.safe }}.cdx.json \
264- --type cyclonedx \
265- "${{ matrix.image.name }}@${{ matrix.image.digest }}"
212+ image_name : ${{ matrix.image.name }}
213+ image_digest : ${{ matrix.image.digest }}
214+ registry_password : ${{ secrets.GITHUB_TOKEN }}
266215
267216 e2e-test :
268217 name : " E2E Test Published Images"
@@ -271,8 +220,7 @@ jobs:
271220 needs :
272221 - build-images-docker
273222 - build-images-ko
274- - attest
275- - sbom-ko
223+ - attest-and-sbom-ko
276224 env :
277225 CLUSTER_NAME : ' nvsentinel-uat'
278226 FAKE_GPU_NODE_COUNT : ' 10'
0 commit comments