1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-11-06 09:09:19 +02:00

fix(cnbBuild): exclude registry domain from the imageNameTag CPE field (#3296)

This commit is contained in:
Pavel Busko
2021-11-18 17:16:29 +01:00
committed by GitHub
parent 3a4f756573
commit 56f58ebd8b
4 changed files with 25 additions and 25 deletions

View File

@@ -362,9 +362,6 @@ func runCnbBuild(config *cnbBuildOptions, telemetryData *telemetry.CustomData, u
}
}
var containerImage string
var containerImageTag string
if len(config.ContainerRegistryURL) == 0 || len(config.ContainerImageName) == 0 || len(config.ContainerImageTag) == 0 {
log.SetErrorCategory(log.ErrorConfiguration)
return errors.New("containerRegistryUrl, containerImageName and containerImageTag must be present")
@@ -377,12 +374,26 @@ func runCnbBuild(config *cnbBuildOptions, telemetryData *telemetry.CustomData, u
log.SetErrorCategory(log.ErrorConfiguration)
return errors.Wrapf(err, "failed to read containerRegistryUrl %s", config.ContainerRegistryURL)
}
commonPipelineEnvironment.container.registryURL = config.ContainerRegistryURL
} else {
containerRegistry = config.ContainerRegistryURL
commonPipelineEnvironment.container.registryURL = fmt.Sprintf("https://%v", config.ContainerRegistryURL)
}
containerImage = fmt.Sprintf("%s/%s", containerRegistry, config.ContainerImageName)
containerImageTag = strings.ReplaceAll(config.ContainerImageTag, "+", "-")
containerImage := path.Join(containerRegistry, config.ContainerImageName)
containerImageTag := strings.ReplaceAll(config.ContainerImageTag, "+", "-")
commonPipelineEnvironment.container.imageNameTag = fmt.Sprintf("%v:%v", config.ContainerImageName, containerImageTag)
targets := []string{
fmt.Sprintf("%s:%s", containerImage, containerImageTag),
}
for _, tag := range config.AdditionalTags {
target := fmt.Sprintf("%s:%s", containerImage, tag)
if !piperutils.ContainsString(targets, target) {
targets = append(targets, target)
}
}
if len(config.CustomTLSCertificateLinks) > 0 {
caCertificates := "/tmp/ca-certificates.crt"
@@ -411,21 +422,6 @@ func runCnbBuild(config *cnbBuildOptions, telemetryData *telemetry.CustomData, u
return errors.Wrapf(err, "execution of '%s' failed", builderPath)
}
containerImageNameTag := fmt.Sprintf("%s:%s", containerImage, containerImageTag)
targets := []string{
containerImageNameTag,
}
commonPipelineEnvironment.container.registryURL = config.ContainerRegistryURL
commonPipelineEnvironment.container.imageNameTag = containerImageNameTag
for _, tag := range config.AdditionalTags {
target := fmt.Sprintf("%s:%s", containerImage, tag)
if !piperutils.ContainsString(targets, target) {
targets = append(targets, target)
}
}
utils.AppendEnv([]string{fmt.Sprintf("CNB_REGISTRY_AUTH=%s", string(cnbRegistryAuth))})
err = utils.RunExecutable(exporterPath, targets...)
if err != nil {

View File

@@ -58,6 +58,8 @@ func TestRunCnbBuild(t *testing.T) {
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-order", "/cnb/order.toml", "-platform", "/tmp/platform"}, runner.Calls[0].Params)
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-platform", "/tmp/platform"}, runner.Calls[1].Params)
assert.Equal(t, []string{fmt.Sprintf("%s/%s:%s", registry, config.ContainerImageName, config.ContainerImageTag)}, runner.Calls[2].Params)
assert.Equal(t, commonPipelineEnvironment.container.registryURL, fmt.Sprintf("https://%s", registry))
assert.Equal(t, commonPipelineEnvironment.container.imageNameTag, "my-image:0.0.1")
})
t.Run("success case (registry without https)", func(t *testing.T) {
@@ -85,6 +87,8 @@ func TestRunCnbBuild(t *testing.T) {
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-order", "/cnb/order.toml", "-platform", "/tmp/platform"}, runner.Calls[0].Params)
assert.Equal(t, []string{"-buildpacks", "/cnb/buildpacks", "-platform", "/tmp/platform"}, runner.Calls[1].Params)
assert.Equal(t, []string{fmt.Sprintf("%s/%s:%s", registry, config.ContainerImageName, config.ContainerImageTag)}, runner.Calls[2].Params)
assert.Equal(t, commonPipelineEnvironment.container.registryURL, fmt.Sprintf("https://%s", registry))
assert.Equal(t, commonPipelineEnvironment.container.imageNameTag, "my-image:0.0.1")
})
t.Run("success case (custom buildpacks and custom env variables, renaming docker conf file, additional tag)", func(t *testing.T) {