Shipward

Docs

GitHub Action

All of the above on every push, with the results in the job summary.

jobs:
  cra:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@<commit>
      - run: dotnet restore --locked-mode       # .NET only: hashes and creators come from restored packages
      - uses: soriresitve/shipward@<commit>     # pin a commit
        with:
          fail-on: none                         # or open, exploited

The Action builds cra from Shipward’s source at the commit you pin, then runs cra sbom, cra check sbom, cra scan and cra triage export. The results:

More than one delivered file #

--artifact takes one file, so make one SBOM per download. The output cra is the path of the binary the Action built; later steps can run it:

      - id: cra
        uses: soriresitve/shipward@<commit>
        with: { check: "false", scan: "false", export-vex: "false", upload: "false" }
      - env: { CRA: "${{ steps.cra.outputs.cra }}" }
        run: |
          "$CRA" sbom --version 1.4.0 --artifact dist/game-setup.exe --form executable,bundle -o sbom/setup.cdx.json
          "$CRA" sbom --version 1.4.0 --artifact dist/game.zip --form bundle -o sbom/zip.cdx.json

Inputs #

InputDefaultWhat
working-directory.Folder with cra.yaml
configcra.yamlSettings file
versiontag name, else the commitProduct version in the SBOM
checktrueList missing SBOM fields (never fails the job)
scantrueScan for known vulnerabilities
fail-onnoneopen or exploited to fail the job
export-vextrueWrite the OpenVEX document when there are decisions
artifact, artifact-urlThe delivered file and its download URL
upload, upload-name, upload-pathtrue, cra, sbomThe workflow artifact

The Action sets up Go to build cra, which changes the job’s Go version.