Description of problem: We are running OpenShift Container Platform v3.7, containerized. We are using a custom build strategy to build and release docker images to our internal docker registry. This strategy works fine but after upgrading to OCP 3.7 we cannot use the binary option --from-file in the oc client. Each time we run the command "oc start-build <bc_name> --from-file=<file_to_use>.zip" , we get the following error message: - command oc start-build aapplication --from-file=openshift-application.zip --follow --wait - message Uploading file "openshift-application.zip" as binary input for the build ... Error from server (BadRequest): container git-clone is not valid for pod <bc_name>-<number>-build Version-Release number of selected component (if applicable): OpenShift Container Platform 3.7 How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
PR: https://github.com/openshift/ose/pull/1163
I can reproduce the bug in version openshift v3.7.40 kubernetes v1.7.6+a08f5eeb62 etcd 3.2.8 oc v3.7.40 -message # oc start-build ruby-sample-build --from-file=ruby-hello-world.zip --follow --wait --loglevel=5 Uploading file "ruby-hello-world.zip" as binary input for the build ... I0327 01:52:31.535955 62891 helpers.go:206] server response object: [{ "metadata": {}, "status": "Failure", "message": "container git-clone is not valid for pod ruby-sample-build-5-build", "reason": "BadRequest", "code": 400 }] F0327 01:52:31.536062 62891 helpers.go:120] Error from server (BadRequest): container git-clone is not valid for pod ruby-sample-build-5-build
Have tested with ocp v3.7.44, met below error when do binary build for custom strategy: $ oc start-build ruby-sample-build --from-file=ruby-hello-world.zip --follow --wait --loglevel=5 Uploading file "ruby-hello-world.zip" as binary input for the build ... build "ruby-sample-build-7" started Could not access source url: F0417 16:58:01.171596 32348 helpers.go:119] error: the build wzheng2/ruby-sample-build-7 status is "Failed"
Wenjing, what image did you use as your custom builder image? There is no source url because it's a binary build, so the logic in our sample custom builder which tries to access the source url will fail: https://github.com/openshift/origin/blob/master/images/builder/docker/custom-docker-builder/build.sh#L33 To do a binary build w/ a custom builder image, you need your custom builder's entrypoint script to do a "tar -xf -" to extract the incoming binary content (and then whatever logic you want to process the content). You can't use the sample custom builder image. I'm pretty sure we don't have any existing tests for this scenario.
OK, I will build a custom builder image to verify this bug. Thx for the info!
Verified with below steps on v3.7.44: 1. Edit custom builder image Dockerfile like below: #CMD ["/tmp/build.sh"] ENTRYPOINT tar -xf - 2. docker build . -t custom-builder 3. Create a custom build with above customized builder image 4. git clone https://github.com/openshift/ruby-hello-world; tar -cf ruby-hello-world.tar.gz ruby-hello-world 5. $ oc start-build ruby-sample-build --from-file=ruby-hello-world.tar.gz --follow --wait --loglevel=5 Uploading file "ruby-hello-world.tar.gz" as binary input for the build ... build "ruby-sample-build-2" started build "ruby-sample-build-2" will go completed at last.