Skip to content

Commit 039e433

Browse files
author
OpenShift Bot
authored
Merge pull request #12153 from PI-Victor/fix_fetch_source_failure
Merged by openshift-bot
2 parents e9e7618 + 228a389 commit 039e433

File tree

11 files changed

+93
-45
lines changed

11 files changed

+93
-45
lines changed

pkg/build/api/types.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -312,25 +312,25 @@ const (
312312

313313
// StatusReasonBuildPodExists indicates that the build tried to create a
314314
// build pod but one was already present.
315-
StatusReasonBuildPodExists = "BuildPodExists"
315+
StatusReasonBuildPodExists StatusReason = "BuildPodExists"
316316
)
317317

318318
// NOTE: These messages might change.
319319
const (
320-
StatusMessageCannotCreateBuildPodSpec = "Failed to create pod spec"
321-
StatusMessageCannotCreateBuildPod = "Failed creating build pod"
322-
StatusMessageInvalidOutputRef = "Output image could not be resolved"
323-
StatusMessageCancelBuildFailed = "Failed to cancel build"
324-
StatusMessageBuildPodDeleted = "The pod for this build was deleted before the build completed"
325-
StatusMessageExceededRetryTimeout = "Build did not complete and retrying timed out"
326-
StatusMessageMissingPushSecret = "Missing push secret"
327-
StatusMessagePostCommitHookFailed = "Build failed because of post commit hook"
328-
StatusMessagePushImageToRegistryFailed = "Failed to push the image to the registry"
329-
StatusMessagePullBuilderImageFailed = "Failed pulling builder image"
330-
StatusMessageFetchSourceFailed = "Failed to fetch the input source"
331-
StatusMessageCancelledBuild = "The build was cancelled by the user"
332-
StatusMessageDockerBuildFailed = "Docker build strategy has failed"
333-
StatusMessageBuildPodExists = "The pod for this build already exists and is older than the build"
320+
StatusMessageCannotCreateBuildPodSpec = "Failed to create pod spec."
321+
StatusMessageCannotCreateBuildPod = "Failed creating build pod."
322+
StatusMessageInvalidOutputRef = "Output image could not be resolved."
323+
StatusMessageCancelBuildFailed = "Failed to cancel build."
324+
StatusMessageBuildPodDeleted = "The pod for this build was deleted before the build completed."
325+
StatusMessageExceededRetryTimeout = "Build did not complete and retrying timed out."
326+
StatusMessageMissingPushSecret = "Missing push secret."
327+
StatusMessagePostCommitHookFailed = "Build failed because of post commit hook."
328+
StatusMessagePushImageToRegistryFailed = "Failed to push the image to the registry."
329+
StatusMessagePullBuilderImageFailed = "Failed pulling builder image."
330+
StatusMessageFetchSourceFailed = "Failed to fetch the input source."
331+
StatusMessageCancelledBuild = "The build was cancelled by the user."
332+
StatusMessageDockerBuildFailed = "Docker build strategy has failed."
333+
StatusMessageBuildPodExists = "The pod for this build already exists and is older than the build."
334334
)
335335

336336
// BuildSource is the input used for the build.

pkg/build/builder/sti.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,10 @@ func (s *S2IBuilder) Build() error {
251251
glog.V(4).Infof("Creating a new S2I builder with build config: %#v\n", describe.Config(config))
252252
builder, buildInfo, err := s.builder.Builder(config, s2ibuild.Overrides{Downloader: download})
253253
if err != nil {
254-
s.build.Status.Reason, s.build.Status.Message = convertS2IFailureType(buildInfo.FailureReason.Reason, buildInfo.FailureReason.Message)
254+
s.build.Status.Reason, s.build.Status.Message = convertS2IFailureType(
255+
buildInfo.FailureReason.Reason,
256+
buildInfo.FailureReason.Message,
257+
)
255258
if updateErr := retryBuildStatusUpdate(s.build, s.client, nil); updateErr != nil {
256259
utilruntime.HandleError(fmt.Errorf("error: An error occured while updating the build status: %v", updateErr))
257260
}
@@ -261,7 +264,10 @@ func (s *S2IBuilder) Build() error {
261264
glog.V(4).Infof("Starting S2I build from %s/%s BuildConfig ...", s.build.Namespace, s.build.Name)
262265
result, err := builder.Build(config)
263266
if err != nil {
264-
s.build.Status.Reason, s.build.Status.Message = convertS2IFailureType(result.BuildInfo.FailureReason.Reason, result.BuildInfo.FailureReason.Message)
267+
s.build.Status.Reason, s.build.Status.Message = convertS2IFailureType(
268+
result.BuildInfo.FailureReason.Reason,
269+
result.BuildInfo.FailureReason.Message,
270+
)
265271

266272
if updateErr := retryBuildStatusUpdate(s.build, s.client, nil); updateErr != nil {
267273
utilruntime.HandleError(fmt.Errorf("error: An error occured while updating the build status: %v", updateErr))

pkg/build/controller/controller.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ func (bc *BuildPodController) HandlePod(pod *kapi.Pod) error {
312312
build.Status.Reason = ""
313313
build.Status.Message = ""
314314
nextStatus = buildapi.BuildPhaseRunning
315+
315316
case kapi.PodPending:
316317
build.Status.Reason = ""
317318
build.Status.Message = ""
@@ -323,6 +324,7 @@ func (bc *BuildPodController) HandlePod(pod *kapi.Pod) error {
323324
glog.V(4).Infof("Setting reason for pending build to %q due to missing secret %s/%s", build.Status.Reason, build.Namespace, secret.Name)
324325
}
325326
}
327+
326328
case kapi.PodSucceeded:
327329
build.Status.Reason = ""
328330
build.Status.Message = ""
@@ -341,8 +343,10 @@ func (bc *BuildPodController) HandlePod(pod *kapi.Pod) error {
341343
}
342344
}
343345
}
346+
344347
case kapi.PodFailed:
345348
nextStatus = buildapi.BuildPhaseFailed
349+
346350
default:
347351
build.Status.Reason = ""
348352
build.Status.Message = ""

test/extended/builds/failure_status.go

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package builds
22

33
import (
4+
"fmt"
5+
46
g "github.com/onsi/ginkgo"
57
o "github.com/onsi/gomega"
68

@@ -15,15 +17,18 @@ var _ = g.Describe("[builds][Slow] update failure status", func() {
1517

1618
var (
1719
// convert the s2i failure cases to our own StatusReason
18-
reasonAssembleFailed = buildapi.StatusReason(s2istatus.ReasonAssembleFailed)
19-
messageAssembleFailed = string(s2istatus.ReasonMessageAssembleFailed)
20-
21-
oc = exutil.NewCLI("update-buildstatus", exutil.KubeConfigPath())
22-
postCommitHookFixture = exutil.FixturePath("testdata", "statusfail-postcommithook.yaml")
23-
gitCloneFixture = exutil.FixturePath("testdata", "statusfail-fetchsource.yaml")
24-
builderImageFixture = exutil.FixturePath("testdata", "statusfail-fetchbuilderimage.yaml")
25-
pushToRegistryFixture = exutil.FixturePath("testdata", "statusfail-pushtoregistry.yaml")
26-
failedAssembleFixture = exutil.FixturePath("testdata", "statusfail-failedassemble.yaml")
20+
reasonAssembleFailed = buildapi.StatusReason(s2istatus.ReasonAssembleFailed)
21+
messageAssembleFailed = string(s2istatus.ReasonMessageAssembleFailed)
22+
reasonFetchSourceFailed = buildapi.StatusReason(s2istatus.ReasonFetchSourceFailed)
23+
messageFetchSourceFailed = string(s2istatus.ReasonMessageFetchSourceFailed)
24+
postCommitHookFixture = exutil.FixturePath("testdata", "statusfail-postcommithook.yaml")
25+
fetchDockerSrc = exutil.FixturePath("testdata", "statusfail-fetchsourcedocker.yaml")
26+
fetchS2ISrc = exutil.FixturePath("testdata", "statusfail-fetchsources2i.yaml")
27+
builderImageFixture = exutil.FixturePath("testdata", "statusfail-fetchbuilderimage.yaml")
28+
pushToRegistryFixture = exutil.FixturePath("testdata", "statusfail-pushtoregistry.yaml")
29+
failedAssembleFixture = exutil.FixturePath("testdata", "statusfail-failedassemble.yaml")
30+
binaryBuildDir = exutil.FixturePath("testdata", "statusfail-assemble")
31+
oc = exutil.NewCLI("update-buildstatus", exutil.KubeConfigPath())
2732
)
2833

2934
g.JustBeforeEach(func() {
@@ -37,7 +42,7 @@ var _ = g.Describe("[builds][Slow] update failure status", func() {
3742
err := oc.Run("create").Args("-f", postCommitHookFixture).Execute()
3843
o.Expect(err).NotTo(o.HaveOccurred())
3944

40-
br, err := exutil.StartBuildAndWait(oc, "failstatus-postcommithook")
45+
br, err := exutil.StartBuildAndWait(oc, "statusfail-postcommithook")
4146
o.Expect(err).NotTo(o.HaveOccurred())
4247
br.AssertFailure()
4348

@@ -48,12 +53,12 @@ var _ = g.Describe("[builds][Slow] update failure status", func() {
4853
})
4954
})
5055

51-
g.Describe("Build status fetch source failure", func() {
52-
g.It("should contain the fetch source failure reason and message", func() {
53-
err := oc.Run("create").Args("-f", gitCloneFixture).Execute()
56+
g.Describe("Build status Docker fetch source failure", func() {
57+
g.It("should contain the Docker build fetch source failure reason and message", func() {
58+
err := oc.Run("create").Args("-f", fetchDockerSrc).Execute()
5459
o.Expect(err).NotTo(o.HaveOccurred())
5560

56-
br, err := exutil.StartBuildAndWait(oc, "failstatus-fetchsource")
61+
br, err := exutil.StartBuildAndWait(oc, "statusfail-fetchsourcedocker")
5762
o.Expect(err).NotTo(o.HaveOccurred())
5863
br.AssertFailure()
5964

@@ -64,12 +69,28 @@ var _ = g.Describe("[builds][Slow] update failure status", func() {
6469
})
6570
})
6671

72+
g.Describe("Build status fetch S2I source failure", func() {
73+
g.It("should contain the S2I fetch source failure reason and message", func() {
74+
err := oc.Run("create").Args("-f", fetchS2ISrc).Execute()
75+
o.Expect(err).NotTo(o.HaveOccurred())
76+
77+
br, err := exutil.StartBuildAndWait(oc, "statusfail-fetchsourcesourcetoimage")
78+
o.Expect(err).NotTo(o.HaveOccurred())
79+
br.AssertFailure()
80+
81+
build, err := oc.Client().Builds(oc.Namespace()).Get(br.Build.Name)
82+
o.Expect(err).NotTo(o.HaveOccurred())
83+
o.Expect(build.Status.Reason).To(o.Equal(reasonFetchSourceFailed))
84+
o.Expect(build.Status.Message).To(o.Equal(messageFetchSourceFailed))
85+
})
86+
})
87+
6788
g.Describe("Build status fetch builder image failure", func() {
6889
g.It("should contain the fetch builder image failure reason and message", func() {
6990
err := oc.Run("create").Args("-f", builderImageFixture).Execute()
7091
o.Expect(err).NotTo(o.HaveOccurred())
7192

72-
br, err := exutil.StartBuildAndWait(oc, "failstatus-builderimage")
93+
br, err := exutil.StartBuildAndWait(oc, "statusfail-builderimage")
7394
o.Expect(err).NotTo(o.HaveOccurred())
7495
br.AssertFailure()
7596

@@ -85,7 +106,7 @@ var _ = g.Describe("[builds][Slow] update failure status", func() {
85106
err := oc.Run("create").Args("-f", pushToRegistryFixture).Execute()
86107
o.Expect(err).NotTo(o.HaveOccurred())
87108

88-
br, err := exutil.StartBuildAndWait(oc, "failstatus-pushtoregistry")
109+
br, err := exutil.StartBuildAndWait(oc, "statusfail-pushtoregistry")
89110
o.Expect(err).NotTo(o.HaveOccurred())
90111
br.AssertFailure()
91112

@@ -101,7 +122,7 @@ var _ = g.Describe("[builds][Slow] update failure status", func() {
101122
err := oc.Run("create").Args("-f", failedAssembleFixture).Execute()
102123
o.Expect(err).NotTo(o.HaveOccurred())
103124

104-
br, err := exutil.StartBuildAndWait(oc, "failstatus-assemblescript")
125+
br, err := exutil.StartBuildAndWait(oc, "statusfail-assemblescript", fmt.Sprintf("--from-dir=%s", binaryBuildDir))
105126
o.Expect(err).NotTo(o.HaveOccurred())
106127
br.AssertFailure()
107128

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/usr/bin/env bash
2+
3+
exit 123123
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
kind: BuildConfig
22
apiVersion: v1
33
metadata:
4-
name: failstatus-assemblescript
4+
name: statusfail-assemblescript
55
spec:
66
source:
77
type: binary
88
strategy:
9+
type: Source
910
sourceStrategy:
1011
from:
1112
kind: DockerImage
12-
name: centos/ruby-23-centos7
13-
type: Source
13+
name: centos/ruby-23-centos7:latest
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
kind: BuildConfig
22
apiVersion: v1
33
metadata:
4-
name: failstatus-builderimage
4+
name: statusfail-builderimage
55
spec:
66
source:
77
git:
88
uri: "https://github.com/openshift/ruby-hello-world.git"
99
strategy:
10+
type: Docker
1011
dockerStrategy:
1112
from:
1213
kind: DockerImage
1314
name: fail/me:latest
14-
type: Source
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
kind: BuildConfig
22
apiVersion: v1
33
metadata:
4-
name: failstatus-fetchsource
4+
name: statusfail-fetchsourcedocker
55
spec:
66
source:
77
git:
8-
uri: "https://failure/s2i/status"
8+
uri: "https://failure/docker/status"
99
strategy:
10+
type: Docker
1011
dockerStrategy:
1112
from:
1213
kind: DockerImage
13-
name: ruby:latest
14-
type: Docker
14+
name: centos/ruby-23-centos7:latest
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
kind: BuildConfig
2+
apiVersion: v1
3+
metadata:
4+
name: statusfail-fetchsourcesourcetoimage
5+
spec:
6+
source:
7+
git:
8+
uri: "https://failure/sourcetoimage/status"
9+
strategy:
10+
type: Source
11+
sourceStrategy:
12+
from:
13+
kind: DockerImage
14+
name: centos/ruby-23-centos7:latest

test/extended/testdata/statusfail-postcommithook.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
kind: BuildConfig
22
apiVersion: v1
33
metadata:
4-
name: failstatus-postcommithook
4+
name: statusfail-postcommithook
55
spec:
66
source:
77
git:

test/extended/testdata/statusfail-pushtoregistry.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
kind: BuildConfig
22
apiVersion: v1
33
metadata:
4-
name: failstatus-pushtoregistry
4+
name: statusfail-pushtoregistry
55
spec:
66
source:
77
git:

0 commit comments

Comments
 (0)