Skip to content

Commit ebb59c4

Browse files
Merge pull request #18461 from bparees/nocache
Automatic merge from submit-queue. check all buildrequest options for validity against build type
2 parents c49e64b + e387676 commit ebb59c4

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

pkg/build/generator/generator.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -275,13 +275,16 @@ func (g *BuildGenerator) instantiate(ctx apirequest.Context, request *buildapi.B
275275
// Update the Docker build args
276276
if dockerOpts.BuildArgs != nil && len(dockerOpts.BuildArgs) > 0 {
277277
if newBuild.Spec.Strategy.DockerStrategy == nil {
278-
return nil, errors.NewBadRequest(fmt.Sprintf("Cannot specify build args on %s/%s, not a Docker build.", bc.Namespace, bc.ObjectMeta.Name))
278+
return nil, errors.NewBadRequest(fmt.Sprintf("Cannot specify Docker build specific options on %s/%s, not a Docker build.", bc.Namespace, bc.ObjectMeta.Name))
279279
}
280280
newBuild.Spec.Strategy.DockerStrategy.BuildArgs = updateBuildArgs(&newBuild.Spec.Strategy.DockerStrategy.BuildArgs, dockerOpts.BuildArgs)
281281
}
282282

283283
// Update the Docker noCache option
284284
if dockerOpts.NoCache != nil {
285+
if newBuild.Spec.Strategy.DockerStrategy == nil {
286+
return nil, errors.NewBadRequest(fmt.Sprintf("Cannot specify Docker build specific options on %s/%s, not a Docker build.", bc.Namespace, bc.ObjectMeta.Name))
287+
}
285288
newBuild.Spec.Strategy.DockerStrategy.NoCache = *dockerOpts.NoCache
286289
}
287290
}
@@ -292,6 +295,9 @@ func (g *BuildGenerator) instantiate(ctx apirequest.Context, request *buildapi.B
292295

293296
// Update the Source incremental option
294297
if sourceOpts.Incremental != nil {
298+
if newBuild.Spec.Strategy.SourceStrategy == nil {
299+
return nil, errors.NewBadRequest(fmt.Sprintf("Cannot specify Source build specific options on %s/%s, not a Source build.", bc.Namespace, bc.ObjectMeta.Name))
300+
}
295301
newBuild.Spec.Strategy.SourceStrategy.Incremental = sourceOpts.Incremental
296302
}
297303
}

test/cmd/builds.sh

+3
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ build_name="$(oc start-build -o=name test)"
142142
os::cmd::expect_success_and_not_text "oc describe ${build_name}" 'Incremental Build'
143143
build_name="$(oc start-build -o=name --incremental test)"
144144
os::cmd::expect_success_and_text "oc describe ${build_name}" 'Incremental Build'
145+
os::cmd::expect_failure_and_text "oc start-build test --no-cache" 'Cannot specify Docker build specific options'
146+
os::cmd::expect_failure_and_text "oc start-build test --build-arg=a=b" 'Cannot specify Docker build specific options'
145147
os::cmd::expect_success 'oc delete all --selector="name=test"'
146148
# --no-cache flag should override Spec.Strategy.SourceStrategy.NoCache
147149
os::cmd::expect_success 'oc create -f test/extended/testdata/builds/test-docker-build.json'
@@ -159,6 +161,7 @@ build_name="$(oc start-build -o=name test)"
159161
os::cmd::expect_success_and_not_text "oc describe ${build_name}" 'No Cache'
160162
build_name="$(oc start-build -o=name --no-cache test)"
161163
os::cmd::expect_success_and_text "oc describe ${build_name}" 'No Cache'
164+
os::cmd::expect_failure_and_text "oc start-build test --incremental" 'Cannot specify Source build specific options'
162165
os::cmd::expect_success 'oc delete all --selector="name=test"'
163166
echo "start-build: ok"
164167
os::test::junit::declare_suite_end

0 commit comments

Comments
 (0)