2323
2424jobs :
2525
26- # ── GET VERSION + TAG ─────────────────────────────────
2726 get-meta :
2827 runs-on : ubuntu-latest
2928 outputs :
7473 && echo "webui=true" >> $GITHUB_OUTPUT \
7574 || echo "webui=false" >> $GITHUB_OUTPUT
7675
77- #
78-
79- # ── PROXY ─────────────────────────────────────────────
8076 build-proxy :
8177 needs : get-meta
8278 if : needs.get-meta.outputs.proxy_changed == 'true'
@@ -141,29 +137,27 @@ jobs:
141137 curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh \
142138 | sh -s -- -b /usr/local/bin
143139
144-
145140 - name : Generate SBOM + attest proxy
146141 run : |
147142 echo "${{ secrets.COSIGN_PRIVATE_KEY }}" > /tmp/cosign.key
148143 chmod 600 /tmp/cosign.key
149144
150- syft ${{ steps.build-proxy.outputs.digest }} -o spdx-json > /tmp/sbom.spdx.json
145+ syft ${{ steps.build-proxy.outputs.digest }} -o spdx-json > /tmp/sbom-proxy .spdx.json
151146
152147 COSIGN_PASSWORD="" cosign attest --yes \
153148 --key /tmp/cosign.key \
154149 --type spdxjson \
155- --predicate /tmp/sbom.spdx.json \
150+ --predicate /tmp/sbom-proxy .spdx.json \
156151 ${{ steps.build-proxy.outputs.digest }}
157152
158- rm /tmp/cosign.key /tmp/sbom.spdx.json
159-
153+ rm /tmp/cosign.key
160154
161155 - name : Attest provenance proxy
162156 run : |
163157 echo "${{ secrets.COSIGN_PRIVATE_KEY }}" > /tmp/cosign.key
164158 chmod 600 /tmp/cosign.key
165159
166- cat > /tmp/provenance.json << EOF
160+ cat > /tmp/provenance-proxy .json << EOF
167161 {
168162 "buildType": "https://github.com/enclaive/garnet",
169163 "builder": {"id": "github-actions"},
@@ -179,12 +173,20 @@ jobs:
179173 COSIGN_PASSWORD="" cosign attest --yes \
180174 --key /tmp/cosign.key \
181175 --type slsaprovenance \
182- --predicate /tmp/provenance.json \
176+ --predicate /tmp/provenance-proxy .json \
183177 ${{ steps.build-proxy.outputs.digest }}
184178
185- rm /tmp/cosign.key /tmp/provenance.json
179+ rm /tmp/cosign.key
180+
181+ - name : Upload SBOM + provenance artifacts
182+ uses : actions/upload-artifact@v4
183+ with :
184+ name : proxy-sbom-provenance-${{ needs.get-meta.outputs.revision }}
185+ path : |
186+ /tmp/sbom-proxy.spdx.json
187+ /tmp/provenance-proxy.json
188+ retention-days : 90
186189
187- # ── PYTHON CHECKS (pip-audit, ruff, mypy, trivy, bandit) ──
188190 python-checks :
189191 needs : [get-meta, build-proxy]
190192 if : needs.get-meta.outputs.proxy_changed == 'true'
@@ -195,7 +197,6 @@ jobs:
195197 HARBOR_USERNAME : ${{ secrets.HARBOR_USERNAME }}
196198 HARBOR_PASSWORD : ${{ secrets.HARBOR_PASSWORD }}
197199
198- # ── DEPLOY PROXY ──────────────────────────────────────
199200 deploy-proxy :
200201 needs : [get-meta, build-proxy, python-checks]
201202 if : needs.get-meta.outputs.proxy_changed == 'true'
@@ -222,7 +223,6 @@ jobs:
222223 docker exec garnet-privacy-proxy-1 python3 -c \
223224 'import urllib.request; print(urllib.request.urlopen(\"http://localhost:8080/health\").read())'"
224225
225- # ── RUN TESTS ─────────────────────────────────────────
226226 run-tests :
227227 needs : deploy-proxy
228228 if : needs.get-meta.outputs.proxy_changed == 'true'
@@ -231,7 +231,6 @@ jobs:
231231 SSH_PRIVATE_KEY : ${{ secrets.SSH_PRIVATE_KEY }}
232232 CVM_HOST : ${{ secrets.CVM_HOST }}
233233
234- # ── WEBUI ─────────────────────────────────────────────
235234 build-webui :
236235 needs : get-meta
237236 if : needs.get-meta.outputs.webui_changed == 'true'
@@ -291,7 +290,6 @@ jobs:
291290 ${{ steps.build-webui.outputs.digest }}
292291 rm /tmp/cosign.key
293292
294-
295293 - name : Install Syft
296294 run : |
297295 curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh \
@@ -302,22 +300,22 @@ jobs:
302300 echo "${{ secrets.COSIGN_PRIVATE_KEY }}" > /tmp/cosign.key
303301 chmod 600 /tmp/cosign.key
304302
305- syft ${{ steps.build-webui.outputs.digest }} -o spdx-json > /tmp/sbom.spdx.json
303+ syft ${{ steps.build-webui.outputs.digest }} -o spdx-json > /tmp/sbom-webui .spdx.json
306304
307305 COSIGN_PASSWORD="" cosign attest --yes \
308306 --key /tmp/cosign.key \
309307 --type spdxjson \
310- --predicate /tmp/sbom.spdx.json \
308+ --predicate /tmp/sbom-webui .spdx.json \
311309 ${{ steps.build-webui.outputs.digest }}
312310
313- rm /tmp/cosign.key /tmp/sbom.spdx.json
311+ rm /tmp/cosign.key
314312
315313 - name : Attest provenance webui
316314 run : |
317315 echo "${{ secrets.COSIGN_PRIVATE_KEY }}" > /tmp/cosign.key
318316 chmod 600 /tmp/cosign.key
319317
320- cat > /tmp/provenance.json << EOF
318+ cat > /tmp/provenance-webui .json << EOF
321319 {
322320 "buildType": "https://github.com/enclaive/garnet",
323321 "builder": {"id": "github-actions"},
@@ -333,12 +331,20 @@ jobs:
333331 COSIGN_PASSWORD="" cosign attest --yes \
334332 --key /tmp/cosign.key \
335333 --type slsaprovenance \
336- --predicate /tmp/provenance.json \
334+ --predicate /tmp/provenance-webui .json \
337335 ${{ steps.build-webui.outputs.digest }}
338336
339- rm /tmp/cosign.key /tmp/provenance.json
337+ rm /tmp/cosign.key
338+
339+ - name : Upload SBOM + provenance artifacts
340+ uses : actions/upload-artifact@v4
341+ with :
342+ name : webui-sbom-provenance-${{ needs.get-meta.outputs.revision }}
343+ path : |
344+ /tmp/sbom-webui.spdx.json
345+ /tmp/provenance-webui.json
346+ retention-days : 90
340347
341- # ── DEPLOY WEBUI ──────────────────────────────────────
342348 deploy-webui :
343349 needs : [get-meta, build-webui]
344350 if : needs.get-meta.outputs.webui_changed == 'true'
0 commit comments