Skip to content

Commit 4f709b4

Browse files
Merge pull request #18253 from bparees/resolve_secret2
Automatic merge from submit-queue. wait for default service account secrets before running build fixes https://bugzilla.redhat.com/show_bug.cgi?id=1333030
2 parents 189d01b + d939f0e commit 4f709b4

File tree

3 files changed

+20
-8
lines changed

3 files changed

+20
-8
lines changed

pkg/build/apis/build/types.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,7 @@ const (
544544
StatusMessageFailedContainer = "The pod for this build has at least one container with a non-zero exit status."
545545
StatusMessageGenericBuildFailed = "Generic Build failure - check logs for details."
546546
StatusMessageUnresolvableEnvironmentVariable = "Unable to resolve build environment variable reference."
547-
StatusMessageCannotRetrieveServiceAccount = "Unable to look up the service account associated with this build."
547+
StatusMessageCannotRetrieveServiceAccount = "Unable to look up the service account secrets for this build."
548548
)
549549

550550
// BuildStatusOutput contains the status of the built image.

pkg/build/controller/build/build_controller.go

+15-3
Original file line numberDiff line numberDiff line change
@@ -500,11 +500,23 @@ func (bc *BuildController) resolveImageSecretAsReference(build *buildapi.Build,
500500
if err != nil {
501501
return nil, fmt.Errorf("Error getting push/pull secrets for service account %s/%s: %v", build.Namespace, serviceAccount, err)
502502
}
503-
pushSecret := buildutil.FindDockerSecretAsReference(builderSecrets, imagename)
504-
if pushSecret == nil {
503+
secret := buildutil.FindDockerSecretAsReference(builderSecrets, imagename)
504+
if secret == nil {
505+
dockerSecretExists := false
506+
for _, builderSecret := range builderSecrets {
507+
if builderSecret.Type == kapi.SecretTypeDockercfg || builderSecret.Type == kapi.SecretTypeDockerConfigJson {
508+
dockerSecretExists = true
509+
break
510+
}
511+
}
512+
// If there are no docker secrets associated w/ the service account, return an error so the build
513+
// will be retried. The secrets will be created shortly.
514+
if !dockerSecretExists {
515+
return nil, fmt.Errorf("No docker secrets associated with build service account %s", serviceAccount)
516+
}
505517
glog.V(4).Infof("No secrets found for pushing or pulling image named %s for build %s/%s", imagename, build.Namespace, build.Name)
506518
}
507-
return pushSecret, nil
519+
return secret, nil
508520
}
509521

510522
// resourceName creates a string that can be used to uniquely key the provided resource.

pkg/build/controller/build/build_controller_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ func TestCreateBuildPodWithImageStreamOutput(t *testing.T) {
456456
imageStreamRef := &kapi.ObjectReference{Name: "isname:latest", Namespace: "isnamespace", Kind: "ImageStreamTag"}
457457
bc := newFakeBuildController(nil, imageClient, nil, nil)
458458
defer bc.stop()
459-
build := dockerStrategy(mockBuild(buildapi.BuildPhaseNew, buildapi.BuildOutput{To: imageStreamRef}))
459+
build := dockerStrategy(mockBuild(buildapi.BuildPhaseNew, buildapi.BuildOutput{To: imageStreamRef, PushSecret: &kapi.LocalObjectReference{}}))
460460
podName := buildapi.GetBuildPodName(build)
461461

462462
update, err := bc.createBuildPod(build)
@@ -479,7 +479,7 @@ func TestCreateBuildPodWithOutputImageStreamMissing(t *testing.T) {
479479
imageStreamRef := &kapi.ObjectReference{Name: "isname:latest", Namespace: "isnamespace", Kind: "ImageStreamTag"}
480480
bc := newFakeBuildController(nil, nil, nil, nil)
481481
defer bc.stop()
482-
build := dockerStrategy(mockBuild(buildapi.BuildPhaseNew, buildapi.BuildOutput{To: imageStreamRef}))
482+
build := dockerStrategy(mockBuild(buildapi.BuildPhaseNew, buildapi.BuildOutput{To: imageStreamRef, PushSecret: &kapi.LocalObjectReference{}}))
483483

484484
update, err := bc.createBuildPod(build)
485485

@@ -499,7 +499,7 @@ func TestCreateBuildPodWithImageStreamMissing(t *testing.T) {
499499
imageStreamRef := &kapi.ObjectReference{Name: "isname:latest", Kind: "DockerImage"}
500500
bc := newFakeBuildController(nil, nil, nil, nil)
501501
defer bc.stop()
502-
build := dockerStrategy(mockBuild(buildapi.BuildPhaseNew, buildapi.BuildOutput{To: imageStreamRef}))
502+
build := dockerStrategy(mockBuild(buildapi.BuildPhaseNew, buildapi.BuildOutput{To: imageStreamRef, PushSecret: &kapi.LocalObjectReference{}}))
503503
build.Spec.Strategy.DockerStrategy.From = &kapi.ObjectReference{Kind: "ImageStreamTag", Name: "isname:latest"}
504504

505505
update, err := bc.createBuildPod(build)
@@ -524,7 +524,7 @@ func TestCreateBuildPodWithImageStreamUnresolved(t *testing.T) {
524524
imageStreamRef := &kapi.ObjectReference{Name: "isname:latest", Namespace: "isnamespace", Kind: "ImageStreamTag"}
525525
bc := newFakeBuildController(nil, imageClient, nil, nil)
526526
defer bc.stop()
527-
build := dockerStrategy(mockBuild(buildapi.BuildPhaseNew, buildapi.BuildOutput{To: imageStreamRef}))
527+
build := dockerStrategy(mockBuild(buildapi.BuildPhaseNew, buildapi.BuildOutput{To: imageStreamRef, PushSecret: &kapi.LocalObjectReference{}}))
528528

529529
update, err := bc.createBuildPod(build)
530530

0 commit comments

Comments
 (0)