diff --git a/src/com/blackduck/integration/pipeline/SimplePipeline.groovy b/src/com/blackduck/integration/pipeline/SimplePipeline.groovy index 9af63e1..9b3f2da 100644 --- a/src/com/blackduck/integration/pipeline/SimplePipeline.groovy +++ b/src/com/blackduck/integration/pipeline/SimplePipeline.groovy @@ -146,21 +146,33 @@ class SimplePipeline extends Pipeline { } DetectStage addDetectPopDockerStage(String imageName) { - return addDetectPopDockerStage(imageName, "") + return addDetectPopDockerStage(imageName, "", false) + } + + DetectStage addDetectPopDockerStage(String imageName, boolean codeLocationNameAsImage) { + return addDetectPopDockerStage(imageName, "", codeLocationNameAsImage) } ArrayList addDetectPopDockerStages(ArrayList imageNames) { return addDetectPopDockerStages(imageNames, "") } + ArrayList addDetectPopDockerStages(ArrayList imageNames, boolean codeLocationNameAsImage) { + return addDetectPopDockerStages(imageNames, "", codeLocationNameAsImage) + } + ArrayList addDetectPopDockerStages(ArrayList imageNames, String detectCommand) { + return addDetectPopDockerStages(imageNames, detectCommand, false) + } + + ArrayList addDetectPopDockerStages(ArrayList imageNames, String detectCommand, boolean codeLocationNameAsImage) { ArrayList detectStages = [] - imageNames.each { imageName -> detectStages << addDetectPopDockerStage(imageName, detectCommand) } + imageNames.each { imageName -> detectStages << addDetectPopDockerStage(imageName, detectCommand, codeLocationNameAsImage) } return detectStages } - DetectStage addDetectPopDockerStage(String imageName, String detectCommand) { - DockerImage dockerImage = new DockerImage(pipelineConfiguration, imageName) + DetectStage addDetectPopDockerStage(String imageName, String detectCommand, boolean codeLocationNameAsImage) { + DockerImage dockerImage = new DockerImage(pipelineConfiguration, imageName, codeLocationNameAsImage) DetectStage detectDockerStage = addDetectPopStage(dockerImage.getBdProjectName(), detectCommand) detectDockerStage.setDockerImage(dockerImage) return detectDockerStage diff --git a/src/com/blackduck/integration/pipeline/tools/DetectStage.groovy b/src/com/blackduck/integration/pipeline/tools/DetectStage.groovy index 925e3a9..54a739f 100644 --- a/src/com/blackduck/integration/pipeline/tools/DetectStage.groovy +++ b/src/com/blackduck/integration/pipeline/tools/DetectStage.groovy @@ -40,6 +40,8 @@ class DetectStage extends Stage { } getPipelineConfiguration().getScriptWrapper().executeCommandWithException("docker pull ${fullImageName}") + + addDetectParameters(dockerImage.getCodeLocationNameAsImage(pipelineConfiguration.scriptWrapper.getJenkinsProperty(DETECT_PROJECT_VERSION_NAME_OVERRIDE))) } String combinedDetectParameters = "${blackduckConnection} ${getDetectCommand()} ${getDefaultExclusionParameters()}" diff --git a/src/com/blackduck/integration/pipeline/tools/DockerImage.groovy b/src/com/blackduck/integration/pipeline/tools/DockerImage.groovy index d614287..d32b3e4 100644 --- a/src/com/blackduck/integration/pipeline/tools/DockerImage.groovy +++ b/src/com/blackduck/integration/pipeline/tools/DockerImage.groovy @@ -9,6 +9,7 @@ class DockerImage { private PipelineConfiguration pipelineConfiguration private final String rawDockerImage + private final boolean codeLocationNameAsImage private final String dockerImageOrg private final String dockerImageName private final String bdProjectName @@ -16,9 +17,10 @@ class DockerImage { private String fullDockerImageName private String dockerImageVersion - DockerImage(PipelineConfiguration pipelineConfiguration, String rawDockerImage) { + DockerImage(PipelineConfiguration pipelineConfiguration, String rawDockerImage, boolean codeLocationNameAsImage) { this.pipelineConfiguration = pipelineConfiguration this.rawDockerImage = rawDockerImage + this.codeLocationNameAsImage = codeLocationNameAsImage int slashIndex = getSlashIndex() this.dockerImageOrg = rawDockerImage.substring(0, slashIndex) @@ -90,6 +92,15 @@ class DockerImage { } } + String getCodeLocationNameAsImage(String version) { + if (codeLocationNameAsImage) { + pipelineConfiguration.getLogger().info("Using Detect option: detect.code.location.name") + return ' --detect.code.location.name=' + dockerImageOrg + "_" + dockerImageName + '_' + version + } else { + return '' + } + } + String getDockerDetectParams() { if (!dockerImageVersion?.trim()) { setDockerImageVersion(getDockerVersionFromEnvironment())