11package com.liftric.dtcp.tasks
22
33import com.liftric.dtcp.service.DependencyTrack
4+ import io.ktor.client.plugins.ResponseException
45import org.gradle.api.DefaultTask
56import org.gradle.api.GradleException
67import org.gradle.api.file.RegularFileProperty
@@ -48,6 +49,10 @@ abstract class UploadSBOMTask : DefaultTask() {
4849 @get:Optional
4950 abstract val parentVersion: Property <String >
5051
52+ @get:Input
53+ @get:Optional
54+ abstract val ignoreErrors: Property <Boolean >
55+
5156 @TaskAction
5257 fun uploadSBOMTask () {
5358 val inputFileValue = inputFile.get().asFile
@@ -60,22 +65,32 @@ abstract class UploadSBOMTask : DefaultTask() {
6065 val parentNameValue = parentName.orNull
6166 val parentVersionValue = parentVersion.orNull
6267 val parentUUIDValue = parentUUID.orNull
68+ val ignoreErrors = ignoreErrors.getOrElse(false )
6369
6470 if (projectUUIDValue == null && (projectNameValue == null && projectVersionValue == null )) {
6571 throw GradleException (" Either projectUUID or projectName and projectVersion must be set" )
6672 }
6773
6874 val dt = DependencyTrack (apiKeyValue, urlValue)
69- val response = dt.uploadSbom(
70- file = inputFileValue,
71- autoCreate = autoCreateValue,
72- projectUUID = projectUUIDValue,
73- projectName = projectNameValue,
74- projectVersion = projectVersionValue,
75- parentUUID = parentUUIDValue,
76- parentName = parentNameValue,
77- parentVersion = parentVersionValue,
78- )
79- dt.waitForTokenCompletion(response.token)
75+ try {
76+ val response = dt.uploadSbom(
77+ file = inputFileValue,
78+ autoCreate = autoCreateValue,
79+ projectUUID = projectUUIDValue,
80+ projectName = projectNameValue,
81+ projectVersion = projectVersionValue,
82+ parentUUID = parentUUIDValue,
83+ parentName = parentNameValue,
84+ parentVersion = parentVersionValue,
85+ )
86+ dt.waitForTokenCompletion(response.token)
87+ }
88+ catch (e: ResponseException ) {
89+ if (ignoreErrors) {
90+ logger.warn(" Error uploading SBOM: ${e.message} " )
91+ } else {
92+ throw e
93+ }
94+ }
8095 }
8196}
0 commit comments