1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-02-21 19:48:53 +02:00

fix(cnbBuild): correctly construct docker config using credentials (#4441)

Co-authored-by: Ralf Pannemans <ralf.pannemans@sap.com>
This commit is contained in:
Pavel Busko 2023-07-03 10:55:06 +02:00 committed by GitHub
parent d8dacda121
commit 1befaa80a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 3 deletions

View File

@ -7,6 +7,7 @@ import (
"os"
"path"
"path/filepath"
"regexp"
"github.com/SAP/jenkins-library/pkg/buildsettings"
"github.com/SAP/jenkins-library/pkg/certutils"
@ -396,7 +397,17 @@ func callCnbBuild(config *cnbBuildOptions, telemetryData *telemetry.CustomData,
}
log.Entry().Debugf("using docker config file %q", config.DockerConfigJSON)
_, err = docker.CreateDockerConfigJSON(config.ContainerRegistryURL, config.ContainerRegistryUser, config.ContainerRegistryPassword, "", config.DockerConfigJSON, utils)
if matched, _ := regexp.MatchString("^(http|https)://.*", config.ContainerRegistryURL); !matched {
config.ContainerRegistryURL = fmt.Sprintf("https://%s", config.ContainerRegistryURL)
}
containerRegistry, err := docker.ContainerRegistryFromURL(config.ContainerRegistryURL)
if err != nil {
log.SetErrorCategory(log.ErrorConfiguration)
return errors.Wrapf(err, "failed to read registry url %q", config.ContainerRegistryURL)
}
_, err = docker.CreateDockerConfigJSON(containerRegistry, config.ContainerRegistryUser, config.ContainerRegistryPassword, "", config.DockerConfigJSON, utils)
if err != nil {
log.SetErrorCategory(log.ErrorBuild)
return errors.Wrapf(err, "failed to update DockerConfigJSON file %q", config.DockerConfigJSON)

View File

@ -61,7 +61,7 @@ func TestCNBIntegrationNPMProject(t *testing.T) {
},
})
err := container.whenRunningPiperCommand("cnbBuild", "--noTelemetry", "--verbose", "--path", "TestCnbIntegration/project", "--customConfig", "TestCnbIntegration/config.yml", "--containerImageName", "node", "--containerImageTag", "0.0.1", "--dockerConfigJSON", "TestCnbIntegration/config.json", "--containerRegistryUrl", registryURL, "--containerRegistryUser", "foo", "--containerRegistryPassword", "bar", "--defaultProcess", "greeter")
err := container.whenRunningPiperCommand("cnbBuild", "--noTelemetry", "--verbose", "--path", "TestCnbIntegration/project", "--customConfig", "TestCnbIntegration/config.yml", "--containerImageName", "node", "--containerImageTag", "0.0.1", "--dockerConfigJSON", "TestCnbIntegration/config.json", "--containerRegistryUrl", fmt.Sprintf("http://%s", registryURL), "--containerRegistryUser", "foo", "--containerRegistryPassword", "bar", "--defaultProcess", "greeter")
assert.NoError(t, err)
container.assertHasOutput(t, "running command: /cnb/lifecycle/creator")
container.assertHasOutput(t, "Selected Node Engine version (using BP_NODE_VERSION): 16")

View File

@ -14,6 +14,7 @@ func GenerateCnbAuth(config string, utils BuildUtils) (string, error) {
dockerConfig := &configfile.ConfigFile{}
if config != "" {
log.Entry().Debugf("using docker config file %q", config)
dockerConfigJSON, err := utils.FileRead(config)
if err != nil {
return "", err
@ -37,10 +38,13 @@ func GenerateCnbAuth(config string, utils BuildUtils) (string, error) {
}
log.Entry().Debugf("Adding credentials for: registry %q", registry)
auth[registry] = fmt.Sprintf("Basic %s", value.Auth)
}
if len(auth) == 0 {
log.Entry().Warn("docker config file is empty!")
}
cnbRegistryAuth, err := json.Marshal(auth)
if err != nil {
return "", err