@@ -362,10 +362,12 @@ jobs:
362362 if [ -n "$DIGEST" ] && [ "$DIGEST" != "null" ]; then
363363 echo "${DIGEST}" > dist/IMAGE_DIGEST
364364 echo "${IMAGE_REF}@${DIGEST}" > dist/IMAGE_REF_PINNED
365- echo "## Install with digest pinning" >> "$GITHUB_STEP_SUMMARY"
366- echo '```bash' >> "$GITHUB_STEP_SUMMARY"
367- echo "sudo bash secai-bootstrap.sh --digest ${DIGEST}" >> "$GITHUB_STEP_SUMMARY"
368- echo '```' >> "$GITHUB_STEP_SUMMARY"
365+ {
366+ echo "## Install with digest pinning"
367+ echo '```bash'
368+ echo "sudo bash secai-bootstrap.sh --digest ${DIGEST}"
369+ echo '```'
370+ } >> "$GITHUB_STEP_SUMMARY"
369371 else
370372 echo "WARNING: Could not extract image digest for tag ${TAG}"
371373 echo "unknown" > dist/IMAGE_DIGEST
@@ -484,7 +486,8 @@ jobs:
484486 - name : Generate SHA256 checksums
485487 run : |
486488 cd dist
487- sha256sum * > SHA256SUMS
489+ rm -f SHA256SUMS
490+ find . -maxdepth 1 -type f -print0 | sort -z | xargs -0 sha256sum > SHA256SUMS
488491 cat SHA256SUMS
489492
490493 - name : Sign checksums with cosign
@@ -505,10 +508,11 @@ jobs:
505508 run : |
506509 for sbom in dist/*-sbom.cdx.json; do
507510 service=$(basename "$sbom" -sbom.cdx.json)
511+ image_ref="ghcr.io/${{ github.repository }}:${{ github.ref_name }}-${service}"
508512 cosign attest --yes --type cyclonedx \
509513 --predicate "$sbom" \
510514 --key env://COSIGN_PRIVATE_KEY \
511- ghcr.io/${{ github.repository }}:${{ github.ref_name }}-${service} || \
515+ "$image_ref" || \
512516 echo "WARN: cosign attest skipped for ${service} (no matching image)"
513517 done
514518 env :
@@ -540,14 +544,16 @@ jobs:
540544 - name : Note on large artifacts
541545 if : ${{ !inputs.dry_run }}
542546 run : |
543- echo "## Large Artifacts" >> "$GITHUB_STEP_SUMMARY"
544- echo "" >> "$GITHUB_STEP_SUMMARY"
545- echo "Install media files can exceed GitHub Releases' 2GB limit." >> "$GITHUB_STEP_SUMMARY"
546- echo "Their cosign signatures (.sig) are included in the release." >> "$GITHUB_STEP_SUMMARY"
547- echo "Full images are available as workflow artifacts (90-day retention)." >> "$GITHUB_STEP_SUMMARY"
548- for f in dist/secai-os-*.iso dist/secai-os-*-usb.raw.xz dist/secai-os-*.qcow2 dist/secai-os-*.ova; do
549- [ -f "$f" ] || continue
550- SIZE=$(stat -c%s "$f" 2>/dev/null || echo 0)
551- SIZE_MB=$((SIZE / 1048576))
552- echo " - $(basename "$f"): ${SIZE_MB} MB" >> "$GITHUB_STEP_SUMMARY"
553- done
547+ {
548+ echo "## Large Artifacts"
549+ echo ""
550+ echo "Install media files can exceed GitHub Releases' 2GB limit."
551+ echo "Their cosign signatures (.sig) are included in the release."
552+ echo "Full images are available as workflow artifacts (90-day retention)."
553+ for f in dist/secai-os-*.iso dist/secai-os-*-usb.raw.xz dist/secai-os-*.qcow2 dist/secai-os-*.ova; do
554+ [ -f "$f" ] || continue
555+ SIZE=$(stat -c%s "$f" 2>/dev/null || echo 0)
556+ SIZE_MB=$((SIZE / 1048576))
557+ echo " - $(basename "$f"): ${SIZE_MB} MB"
558+ done
559+ } >> "$GITHUB_STEP_SUMMARY"
0 commit comments