---
name: SBOM Generation
"on":
release:
types: [published]
workflow_dispatch:
permissions:
contents: write
jobs:
generate-sbom:
name: Generate Software Bill of Materials
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
- name: Install cargo-sbom
uses: taiki-e/install-action@a37010ded18ff788be4440302bd6830b1ae50d8b
with:
tool: cargo-sbom
- name: Generate SBOM (SPDX format)
run: |
cargo sbom --output-format spdx_json_2_3 > nsip-sbom-spdx.json
- name: Upload SBOM artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f with:
name: sbom-spdx
path: nsip-sbom-spdx.json
retention-days: 90
- name: Attach SBOM to release
if: github.event_name == 'release'
env:
GH_TOKEN: ${{ github.token }}
TAG_NAME: ${{ github.event.release.tag_name }}
run: |
gh release upload "${TAG_NAME}" nsip-sbom-spdx.json \
--clobber