nsip 0.4.0

NSIP Search API client for nsipsearch.nsip.org/api
Documentation
---
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
        # v6.0.2
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2

      - name: Install Rust toolchain
        # master
        uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
        with:
          toolchain: stable

      - name: Install cargo-sbom
        # v2.67.18
        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
        # v4.6.2
        uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f  # v7.0.0
        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