Skip to content

Commit f09f835

Browse files
author
OpenShift Bot
authored
Merge pull request #13206 from coreydaley/release-1.5-bugzilla_1419810_invalid_branch_build_failure_reason
Merged by openshift-bot
2 parents 951d0fb + ae51c37 commit f09f835

File tree

4 files changed

+37
-6
lines changed

4 files changed

+37
-6
lines changed

pkg/build/api/types.go

+5
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,10 @@ const (
312312
// build has failed.
313313
StatusReasonFetchSourceFailed StatusReason = "FetchSourceFailed"
314314

315+
// StatusReasonInvalidContextDirectory indicates that the supplied
316+
// contextDir does not exist
317+
StatusReasonInvalidContextDirectory StatusReason = "InvalidContextDirectory"
318+
315319
// StatusReasonCancelledBuild indicates that the build was cancelled by the
316320
// user.
317321
StatusReasonCancelledBuild StatusReason = "CancelledBuild"
@@ -338,6 +342,7 @@ const (
338342
StatusMessagePushImageToRegistryFailed = "Failed to push the image to the registry."
339343
StatusMessagePullBuilderImageFailed = "Failed pulling builder image."
340344
StatusMessageFetchSourceFailed = "Failed to fetch the input source."
345+
StatusMessageInvalidContextDirectory = "The supplied context directory does not exist."
341346
StatusMessageCancelledBuild = "The build was cancelled by the user."
342347
StatusMessageDockerBuildFailed = "Docker build strategy has failed."
343348
StatusMessageBuildPodExists = "The pod for this build already exists and is older than the build."

pkg/build/builder/docker.go

+11-3
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,17 @@ func (d *DockerBuilder) Build() error {
6868
}
6969
sourceInfo, err := fetchSource(d.dockerClient, buildDir, d.build, initialURLCheckTimeout, os.Stdin, d.gitClient)
7070
if err != nil {
71-
d.build.Status.Phase = api.BuildPhaseFailed
72-
d.build.Status.Reason = api.StatusReasonFetchSourceFailed
73-
d.build.Status.Message = api.StatusMessageFetchSourceFailed
71+
switch err.(type) {
72+
case contextDirNotFoundError:
73+
d.build.Status.Phase = api.BuildPhaseFailed
74+
d.build.Status.Reason = api.StatusReasonInvalidContextDirectory
75+
d.build.Status.Message = api.StatusMessageInvalidContextDirectory
76+
default:
77+
d.build.Status.Phase = api.BuildPhaseFailed
78+
d.build.Status.Reason = api.StatusReasonFetchSourceFailed
79+
d.build.Status.Message = api.StatusMessageFetchSourceFailed
80+
}
81+
7482
handleBuildStatusUpdate(d.build, d.client, nil)
7583
return err
7684
}

pkg/build/builder/source.go

+11
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ const (
3535

3636
type gitAuthError string
3737
type gitNotFoundError string
38+
type contextDirNotFoundError string
3839

3940
func (e gitAuthError) Error() string {
4041
return fmt.Sprintf("failed to fetch requested repository %q with provided credentials", string(e))
@@ -44,6 +45,10 @@ func (e gitNotFoundError) Error() string {
4445
return fmt.Sprintf("requested repository %q not found", string(e))
4546
}
4647

48+
func (e contextDirNotFoundError) Error() string {
49+
return fmt.Sprintf("provided context directory does not exist: %s", string(e))
50+
}
51+
4752
// fetchSource retrieves the inputs defined by the build source into the
4853
// provided directory, or returns an error if retrieval is not possible.
4954
func fetchSource(dockerClient DockerClient, dir string, build *api.Build, urlTimeout time.Duration, in io.Reader, gitClient GitClient) (*git.SourceInfo, error) {
@@ -92,6 +97,12 @@ func fetchSource(dockerClient DockerClient, dir string, build *api.Build, urlTim
9297
}
9398
}
9499

100+
if len(build.Spec.Source.ContextDir) > 0 {
101+
if _, err := os.Stat(filepath.Join(dir, build.Spec.Source.ContextDir)); os.IsNotExist(err) {
102+
return sourceInfo, contextDirNotFoundError(build.Spec.Source.ContextDir)
103+
}
104+
}
105+
95106
// a Dockerfile has been specified, create or overwrite into the destination
96107
if dockerfileSource := build.Spec.Source.Dockerfile; dockerfileSource != nil {
97108
baseDir := dir

pkg/build/builder/sti.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,16 @@ func (s *S2IBuilder) Build() error {
116116
// fetch source
117117
sourceInfo, err := fetchSource(s.dockerClient, srcDir, s.build, initialURLCheckTimeout, os.Stdin, s.gitClient)
118118
if err != nil {
119-
s.build.Status.Phase = api.BuildPhaseFailed
120-
s.build.Status.Reason = api.StatusReasonFetchSourceFailed
121-
s.build.Status.Message = api.StatusMessageFetchSourceFailed
119+
switch err.(type) {
120+
case contextDirNotFoundError:
121+
s.build.Status.Phase = api.BuildPhaseFailed
122+
s.build.Status.Reason = api.StatusReasonInvalidContextDirectory
123+
s.build.Status.Message = api.StatusMessageInvalidContextDirectory
124+
default:
125+
s.build.Status.Phase = api.BuildPhaseFailed
126+
s.build.Status.Reason = api.StatusReasonFetchSourceFailed
127+
s.build.Status.Message = api.StatusMessageFetchSourceFailed
128+
}
122129
handleBuildStatusUpdate(s.build, s.client, nil)
123130
return err
124131
}

0 commit comments

Comments
 (0)