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:
parent
d8dacda121
commit
1befaa80a2
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user