@@ -3,39 +3,57 @@ name: Generate SBOMs
33
44on :
55 push :
6- branches :
7- - master
8- paths :
9- - ' Cargo.lock'
6+ tags :
7+ - ' v*'
108
119jobs :
1210 sbom :
1311 runs-on : ubuntu-latest
1412 steps :
1513 - uses : actions/checkout@v3
1614
17- - uses : actions/setup-python@v5
18- with :
19- python-version : ' 3.10'
20- cache : ' pip'
15+ - name : Install cyclonedx-rust-cargo
16+ run : |
17+ cargo install cargo-cyclonedx
2118
22- - name : Install sbom4rust
19+ - name : Generate SBOM
2320 run : |
24- pip install git+https://github.com/anthonyharrison/sbom4rust.git
21+ cargo cyclonedx \
22+ --spec-version 1.6 \
23+ -f json
2524
26- - name : Run sbom4rust
25+ - name : Enrich and clean up SBOM
2726 run : |
28- sbom4rust -a screenly-cli --sbom spdx --format json -o sbom.spdx.json
29- sbom4rust -a screenly-cli --sbom cyclonedx --format json -o sbom.cyclonedx.json
3027
31- - name : Upload SPDX SBOM
32- uses : actions/upload-artifact@v3
33- with :
34- name : cli-SPDX
35- path : sbom.spdx.json
28+ # Grab the version
29+ export VERSION_TAG="${GITHUB_REF#refs/*/}"
30+ export VERION=$(echo $VERSION_TAG | sed 's/^v//g')
31+
32+ # Delete unnecessary metadata.component.components.
33+ jq 'del(.metadata.component.components)' \
34+ screenly.cdx.json \
35+ > screenly.cdx.json.tmp
36+ mv screenly.cdx.json.tmp screenly.cdx.json
37+
38+ # Render SBOM metadata template
39+ cat sbom/metadata.cdx.json.tmpl | jq | \
40+ envsubst > metadata.cdx.json
41+
42+ # Merge in CycloneDX Metadata
43+ jq --slurp '.[0] * .[1]' \
44+ screenly.cdx.json \
45+ metadata.cdx.json \
46+ > screenly-cli.cdx.json
3647
3748 - name : Upload CycloneDX SBOM
3849 uses : actions/upload-artifact@v3
3950 with :
4051 name : cli-CycloneDX
41- path : sbom.cyclonedx.json
52+ path : screenly-cli.cdx.json
53+
54+ - name : Upload SBOM
55+ uses : sbomify/github-action@master
56+ with :
57+ token : ${{ secrets.SBOMIFY_TOKEN }}
58+ sbom-file : ' screenly-cli.cdx.json'
59+ component-id : ' UUzAdk8ixV'
0 commit comments