Skip to content
41 changes: 12 additions & 29 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ jobs:
# so use GitHub's runners instead of Canonical's self-hosted runners.
arch-map: '{"amd64":["ubuntu-24.04"],"arm64":["ubuntu-24.04-arm"]}'
rockcraft-test: ${{ matrix.run-tests }}
secrets:
source-github-token: ${{ secrets.REPO_CLONER_TOKEN }}

test:
needs: [prepare, build]
Expand All @@ -59,53 +57,38 @@ jobs:
with:
oci-archive-name: ${{ matrix.artifact-name }}

attest-and-scan:
attest:
needs: [prepare, test]
runs-on: ubuntu-latest
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.build-matrix) }}
fail-fast: false
matrix:
include: ${{ fromJSON(needs.prepare.outputs.build-matrix).include }}
arch: [amd64, arm64]
permissions:
contents: read
id-token: write
attestations: write
artifact-metadata: write
steps:
- name: Download rock artifact
- name: Download per-arch rock artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: ${{ matrix.artifact-name }}
pattern: ${{ matrix.artifact-name }}-${{ matrix.name }}_*_${{ matrix.arch }}.rock
path: ./rock
merge-multiple: true

- name: Generate SBOM (Syft)
uses: anchore/sbom-action@e22c389904149dbc22b58101806040fa8d37a610 # v0.24.0
with:
image: oci-archive:./rock/${{ matrix.artifact-name }}
format: spdx-json
output-file: ./sbom.spdx.json
upload-artifact: false
upload-release-assets: false
- name: Locate rock file
id: rock
run: echo "path=$(ls ./rock/${{ matrix.name }}_*_${{ matrix.arch }}.rock)" >> "$GITHUB_OUTPUT"

- name: Attest build provenance
uses: actions/attest@a1948c3f048ba23858d222213b7c278aabede763 # v4.1.1
with:
subject-path: ./rock/${{ matrix.artifact-name }}

- name: Attest SBOM
uses: actions/attest@a1948c3f048ba23858d222213b7c278aabede763 # v4.1.1
with:
subject-path: ./rock/${{ matrix.artifact-name }}
sbom-path: ./sbom.spdx.json

- name: Scan rock (Grype)
uses: anchore/scan-action@e1165082ffb1fe366ebaf02d8526e7c4989ea9d2 # v7.4.0
with:
sbom: ./sbom.spdx.json
fail-build: true
severity-cutoff: high
subject-path: ${{ steps.rock.outputs.path }}

upload-ghcr:
needs: [prepare, attest-and-scan]
needs: [prepare, attest]
runs-on: ubuntu-latest
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.build-matrix) }}
Expand Down
Loading