Skip to content

Commit 7c1d6fd

Browse files
authored
Merge pull request #19 from blagerweij/feature/ignore-errors
Support for ignoring errors during upload
2 parents 9e78695 + 4b376ea commit 7c1d6fd

File tree

3 files changed

+28
-11
lines changed

3 files changed

+28
-11
lines changed

src/main/kotlin/com/liftric/dtcp/DepTrackCompanionPlugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class DepTrackCompanionPlugin : Plugin<Project> {
5454
task.parentUUID.set(extension.parentUUID)
5555
task.parentName.set(extension.parentName)
5656
task.parentVersion.set(extension.parentVersion)
57+
task.ignoreErrors.set(extension.ignoreErrors)
5758
task.dependsOn(generateSbom)
5859
}
5960

src/main/kotlin/com/liftric/dtcp/extensions/DepTrackCompanionExtension.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ abstract class DepTrackCompanionExtension(val project: Project) {
2323
abstract val parentName: Property<String>
2424
abstract val parentVersion: Property<String>
2525
abstract val ignoreProjectAlreadyExists: Property<Boolean>
26+
abstract val ignoreErrors: Property<Boolean>
2627

2728
abstract val riskScoreData: Property<RiskScoreBuilder>
2829

src/main/kotlin/com/liftric/dtcp/tasks/UploadSBOMTask.kt

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.liftric.dtcp.tasks
22

33
import com.liftric.dtcp.service.DependencyTrack
4+
import io.ktor.client.plugins.ResponseException
45
import org.gradle.api.DefaultTask
56
import org.gradle.api.GradleException
67
import 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

Comments
 (0)