Upload SBOM su Dependency-Track nella pipeline - #18
Merged
Conversation
Aggiunto il job dependency-track-upload al workflow maven.yml, che carica l'SBOM CycloneDX prodotto dal job sbom sotto il progetto GovPay-Backend. Esecuzione su tag e sui branch main/master/staging, forzabile con FORCE_DTRACK_UPLOAD_JOB e disattivabile con DISABLE_DTRACK_UPLOAD_JOB. Versione e flag latest seguono la logica del job GitLab equivalente: su tag la versione e' il tag ed e' marcata latest, sui branch protetti e' il nome del branch. Aggiunto script/sbom/upload-sbom-parent-required.sh, adattamento GovPay dello script GovDesk upload-sbom-dependency-track.sh. La gerarchia e' collassata a un solo livello: il progetto padre deve gia' esistere e non viene creato alcun livello intermedio. Nome e versione del progetto foglia sono ricavati dai metadati dell'SBOM, sovrascrivibili con DTRACK_PROJECT_NAME e DTRACK_VERSION. Rispetto allo script di origine i nomi dei progetti non sono piu' interpolati nel sorgente Python ma passati via ambiente, e il file di risposta di curl usa mktemp invece di un path fisso in /tmp.
This was referenced Sep 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Aggiunge alla pipeline il caricamento dell'SBOM su Dependency-Track, traducendo in GitHub Actions il job GitLab
dependency-track-uploadusato su GovDesk.Cosa cambia
.github/workflows/maven.yml— nuovo jobdependency-track-upload:sbomesistente e ne scarica l'artifactsbom-reportsbom/cyclonedx/bom.cdx.jsonsotto il progetto padreGovPay-Backendmain/master/staging; forzabile con la variabileFORCE_DTRACK_UPLOAD_JOB, disattivabile conDISABLE_DTRACK_UPLOAD_JOB, che ha la precedenzacontinue-on-errorriproduce l'allow_failuredifferenziato di GitLab: bloccante su tag e branch protetti, tollerante sulle esecuzioni forzatelatestseguono la logica dell'originale: su tag la versione e' il tag ed e' marcatalatest, sui branch protetti e' il nome del branch, altrimentidevscript/sbom/upload-sbom-parent-required.sh— adattamento GovPay dello script GovDeskupload-sbom-dependency-track.sh:parent-required<API_KEY> <FILE_SBOM> <PARENT_PROJECT>metadata.component), sovrascrivibili conDTRACK_PROJECT_NAMEeDTRACK_VERSION. L'override serve sui branch, dove la versione Maven e'-SNAPSHOTmentre su Dependency-Track vogliamo il nome del branchCorrezioni rispetto allo script di origine
Valgono anche per lo script GovDesk da cui deriva:
p.get('name') == '$name'e la costruzione del body JSON). Un nome contenente un apice rompeva lo script; ora i valori passano per variabili d'ambientecurlera l'hardcoded/tmp/dtrack-upload-response.txt, condiviso fra esecuzioni concorrenti; ora e' unmktempcon cleanup sutrapVerifiche fatte
Testati i percorsi che non richiedono il server: argomenti mancanti, SBOM assente, estrazione dei metadati da un SBOM CycloneDX reale, override via ambiente e lookup del padre fallito. Tutti escono con exit code 1, quindi il job CI fallisce correttamente. YAML del workflow validato.
Non e' stato possibile testare l'upload vero. Richiede un Dependency-Track raggiungibile e una API key valida.
Prerequisiti prima del merge
GOVPAY_DTRACK_API_KEYconfigurato sul repository, con permessiVIEW_PORTFOLIO,PROJECT_CREATION_UPLOAD,BOM_UPLOADePORTFOLIO_MANAGEMENT(quest'ultimo perche' sui tag la versione viene marcatalatest)GovPay-Backendgia' presente su Dependency-Track, senza versionehttps://lab.link.it/dependency-trackda un runnerubuntu-latest: e' il punto piu' incerto, perche' nessun workflow GovPay contatta oggi host interni. Se il servizio non e' esposto pubblicamente serve un runner self-hostedRollout
La stessa modifica si replica identica sugli altri progetti backend Java, cambiando solo il progetto padre per
govpay(GovPay-Legacy).govpay-consoleegovpay-portalsono Angular e richiedono un generatore SBOM per npm, quindi un lavoro diverso.