Skip to content

feat: add reusable SBOM → Dependency-Track workflow (Trivy CycloneDX)#132

Open
BryanFRD wants to merge 1 commit into
mainfrom
feat/sbom-dependency-track
Open

feat: add reusable SBOM → Dependency-Track workflow (Trivy CycloneDX)#132
BryanFRD wants to merge 1 commit into
mainfrom
feat/sbom-dependency-track

Conversation

@BryanFRD

@BryanFRD BryanFRD commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

But

Alimenter Dependency-Track : générer un SBOM CycloneDX en CI et l'uploader dans DT, qui fait ensuite la corrélation CVE des dépendances.

Contenu

  • reusable-sbom-track.yml : job SBOM → Dependency-Track
    • Trivy fs --format cyclonedx = un seul générateur universel (Rust/Node/Java/Python/Go)
    • Upload POST /api/v1/bom vers https://dtrack.ferrlabs.com avec autoCreate=true → projet auto-créé <repo> / version <branche|tag>
    • Non bloquant + soft-pass si DTRACK_API_KEY absent (comme snyk)
    • Runner auto (privé → ferrlabs-k8s, public → ubuntu-latest)
  • workflow-templates/sbom-track.yml (+ .properties.json) : template d'adoption, opt-in par repo.

Validé

  • Endpoint DT confirmé : POST /api/v1/bom multipart (autoCreate/projectName/projectVersion/bom) → 401 avec clé bidon (endpoint OK, auth seule manquante).

Pré-requis (bloquant pour l'exécution réelle)

  • Secret d'org DTRACK_API_KEY : clé API DT d'une Team ayant BOM_UPLOAD + PROJECT_CREATION_UPLOAD + VIEW_PORTFOLIO. Tant qu'il est absent, le job soft-pass.

Activation

Opt-in : chaque repo ajoute l'appel au reusable (ou le template). Suggestion : le brancher sur push:main (et sur les tags pour versionner les releases dans DT).

runs-on: ${{ inputs.runner != '' && inputs.runner || (github.event.repository.private && 'ferrlabs-k8s' || 'ubuntu-latest') }}
if: ${{ !github.event.repository.private || inputs.run-on-private }}
steps:
- uses: actions/checkout@v6
- name: Install Trivy
if: steps.guard.outputs.run == 'true'
run: |
VERSION="${{ inputs.trivy-version }}"
trivy fs \
--format cyclonedx \
--output "$RUNNER_TEMP/sbom.cdx.json" \
${{ inputs.trivy-args }} \
runs-on: ${{ inputs.runner != '' && inputs.runner || (github.event.repository.private && 'ferrlabs-k8s' || 'ubuntu-latest') }}
if: ${{ !github.event.repository.private || inputs.run-on-private }}
steps:
- uses: actions/checkout@v6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants