-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Don't use bash as the entrypoint for docker #5818
Conversation
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: afbjorklund The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Codecov Report
@@ Coverage Diff @@
## master #5818 +/- ##
=======================================
Coverage 36.53% 36.53%
=======================================
Files 110 110
Lines 8116 8116
=======================================
Hits 2965 2965
Misses 4762 4762
Partials 389 389 |
/ok-to-test |
/ok-to-test |
Hey @afbjorklund looks like the Jenkins cross build failed with this error:
|
I can repro locally with: MINIKUBE_BUILD_IN_DOCKER=y make out/docker-machine-driver-hyperkit |
Error: running mkcmp: exit status 1 |
/retest this please |
@priyawadhwa good to know! I can't test on that platform |
I was hoping travis would pick up the master's new Travis config which does a minikube build inside travis linux ( but it seems like the travis pull request trigger, ignores to pull master) .... |
@afbjorklund if you are curious of the logs on jenkins : 12:27:18 GitHub pull request #5818 of commit 0173964362f85842ac75aed4906ee1d095cd350c, no merge conflicts. 12:27:18 Running as SYSTEM 12:27:18 Setting status of 0173964362f85842ac75aed4906ee1d095cd350c to PENDING with url https://storage.googleapis.com/minikube-builds/logs/5818/index.html and message: 'Build started for merge commit.' 12:27:18 Using context: Jenkins Cross Build 12:27:18 [EnvInject] - Loading node environment variables. 12:27:18 [EnvInject] - Preparing an environment for the build. 12:27:18 [EnvInject] - Keeping Jenkins system variables. 12:27:18 [EnvInject] - Keeping Jenkins build variables. 12:27:18 [EnvInject] - Evaluating the Groovy script content 12:27:19 [EnvInject] - Injecting contributions. 12:27:19 Building on master in workspace /var/lib/jenkins/go/src/k8s.io/minikube 12:27:19 [WS-CLEANUP] Deleting project workspace... 12:27:19 [WS-CLEANUP] Deferred wipeout is used... 12:27:19 [WS-CLEANUP] Done 12:27:19 No credentials specified 12:27:19 Cloning the remote Git repository 12:27:19 Cloning repository https://github.com/kubernetes/minikube.git 12:27:19 > git init /var/lib/jenkins/go/src/k8s.io/minikube # timeout=10 12:27:19 Fetching upstream changes from https://github.com/kubernetes/minikube.git 12:27:19 > git --version # timeout=10 12:27:19 > git fetch --tags --progress -- https://github.com/kubernetes/minikube.git +refs/heads/*:refs/remotes/origin/* 12:27:25 > git config remote.origin.url https://github.com/kubernetes/minikube.git # timeout=10 12:27:25 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 12:27:25 > git config remote.origin.url https://github.com/kubernetes/minikube.git # timeout=10 12:27:25 Fetching upstream changes from https://github.com/kubernetes/minikube.git 12:27:25 > git fetch --tags --progress -- https://github.com/kubernetes/minikube.git +refs/pull/*:refs/remotes/origin/pr/* 12:27:35 > git rev-parse refs/remotes/origin/pr/5818/merge^{commit} # timeout=10 12:27:35 > git rev-parse refs/remotes/origin/origin/pr/5818/merge^{commit} # timeout=10 12:27:35 JENKINS-19022: warning: possible memory leak due to Git plugin usage; see: https://wiki.jenkins-ci.org/display/JENKINS/Remove+Git+Plugin+BuildsByBranch+BuildData 12:27:35 Checking out Revision cc6ffe81ae4cc54063a6c13e70fc84a41c6f013a (refs/remotes/origin/pr/5818/merge) 12:27:35 > git config core.sparsecheckout # timeout=10 12:27:35 > git checkout -f cc6ffe81ae4cc54063a6c13e70fc84a41c6f013a 12:27:37 Commit message: "Merge 0173964362f85842ac75aed4906ee1d095cd350c into cf953f9d8cb7cba5d5cbc68e2ed9458e42c47e28" 12:27:37 First time build. Skipping changelog. 12:27:37 Run condition [Environment variable exists] enabling prebuild for step [Inject environment variables] 12:27:37 [EnvInject] - Injecting environment variables from a build step. 12:27:37 [EnvInject] - Injecting as environment variables the properties content 12:27:37 THE_COMMIT=$GIT_COMMIT 12:27:37 12:27:37 [EnvInject] - Variables injected successfully. 12:27:37 Variable Existence Condition: checking "sha1" variable 12:27:37 Run condition [Environment variable exists] enabling perform for step [Inject environment variables] 12:27:37 [EnvInject] - Injecting environment variables from a build step. 12:27:37 [EnvInject] - Injecting as environment variables the properties content 12:27:37 THE_COMMIT=0173964362f85842ac75aed4906ee1d095cd350c 12:27:37 12:27:37 [EnvInject] - Variables injected successfully. 12:27:37 [minikube] $ /bin/bash -xe /tmp/jenkins1748701233179856122.sh 12:27:37 + set -e 12:27:37 + env 12:27:37 ghprbPullId=5818 12:27:37 ghprbPullTitle=Don't use bash as the entrypoint for docker 12:27:37 [email protected] 12:27:37 GIT_COMMIT=cc6ffe81ae4cc54063a6c13e70fc84a41c6f013a 12:27:37 RUN_DISPLAY_URL=http://mkproxy.cbf.corp.google.com/job/Build_Cross/9048/display/redirect 12:27:37 ROOT_BUILD_CAUSE_GHPRBCAUSE=true 12:27:37 JENKINS_URL=http://mkproxy.cbf.corp.google.com/ 12:27:37 EXECUTOR_NUMBER=1 12:27:37 BUILD_CAUSE_GHPRBCAUSE=true 12:27:37 LANG=en_US.UTF-8 12:27:37 BUILD_CAUSE=GHPRBCAUSE 12:27:37 BUILD_ID=9048 12:27:37 ghprbActualCommit=0173964362f85842ac75aed4906ee1d095cd350c 12:27:37 ghprbPullAuthorLogin=afbjorklund 12:27:37 RUN_CHANGES_DISPLAY_URL=http://mkproxy.cbf.corp.google.com/job/Build_Cross/9048/display/redirect?page=changes 12:27:37 ghprbAuthorRepoGitUrl=https://github.com/afbjorklund/minikube.git 12:27:37 ghprbPullLongDescription=The bash shell is not very good at playing init(1), let\r\ntini handle this instead by doing `docker run --init`.\r\n\r\nThis makes it forward signals properly to e.g. make,\r\nand also reaps processes for long-running containers. 12:27:37 ghprbGhRepository=kubernetes/minikube 12:27:37 JOB_BASE_NAME=Build_Cross 12:27:37 ghprbTriggerAuthorLogin=afbjorklund 12:27:37 GIT_URL=https://github.com/kubernetes/minikube.git 12:27:37 HUDSON_COOKIE=34a75734-598f-45a9-a076-85e251275a27 12:27:37 XDG_SESSION_ID=c4 12:27:37 THE_COMMIT=0173964362f85842ac75aed4906ee1d095cd350c 12:27:37 BRANCH=origin/pr/5818/merge 12:27:37 USER=jenkins 12:27:37 ghprbActualCommitAuthor=Anders F Björklund 12:27:37 GOPATH=/go 12:27:37 BUILD_NUMBER=9048 12:27:37 ghprbTargetBranch=master 12:27:37 WORKSPACE=/var/lib/jenkins/go/src/k8s.io/minikube 12:27:37 ghprbPullDescription=GitHub pull request #5818 of commit 0173964362f85842ac75aed4906ee1d095cd350c, no merge conflicts. 12:27:37 PWD=/var/lib/jenkins/go/src/k8s.io/minikube 12:27:37 HUDSON_URL=http://mkproxy.cbf.corp.google.com/ 12:27:37 HOME=/var/lib/jenkins 12:27:37 ghprbTriggerAuthor=Anders Björklund 12:27:37 NODE_NAME=master 12:27:37 HUDSON_SERVER_COOKIE=fd8a7b33dde6712f 12:27:37 [email protected] 12:27:37 JENKINS_HOME=/var/lib/jenkins 12:27:37 JOB_NAME=Build_Cross 12:27:37 access_token=**** 12:27:37 HUDSON_HOME=/var/lib/jenkins 12:27:37 JOB_DISPLAY_URL=http://mkproxy.cbf.corp.google.com/job/Build_Cross/display/redirect 12:27:37 ghprbCredentialsId=04625964-be0c-49a5-9df5-167b8a518fbe 12:27:37 [email protected] 12:27:37 MAIL=/var/mail/jenkins 12:27:37 BUILD_URL=http://mkproxy.cbf.corp.google.com/job/Build_Cross/9048/ 12:27:37 ghprbPullLink=https://github.com/kubernetes/minikube/pull/5818 12:27:37 SHELL=/bin/bash 12:27:37 JOB_URL=http://mkproxy.cbf.corp.google.com/job/Build_Cross/ 12:27:37 ghprbCommentBody=@priyawadhwa good to know! I can't test on that platform 12:27:37 BUILD_DISPLAY_NAME=#9048 12:27:37 ROOT_BUILD_CAUSE=GHPRBCAUSE 12:27:37 SHLVL=2 12:27:37 GIT_BRANCH=docker-entrypoint 12:27:37 BUILD_TAG=jenkins-Build_Cross-9048 12:27:37 NODE_LABELS=linux master 12:27:37 LOGNAME=jenkins 12:27:37 XDG_RUNTIME_DIR=/run/user/108 12:27:37 LOGS_FOLDER=5818 12:27:37 ghprbSourceBranch=docker-entrypoint 12:27:37 PATH=/var/lib/jenkins/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/go/bin:/usr/local/go/bin:/usr/local/go/bin:/usr/local/go/bin:/usr/local/go/bin 12:27:37 ghprbPullAuthorLoginMention=@afbjorklund 12:27:37 sha1=origin/pr/5818/merge 12:27:37 ghprbTriggerAuthorLoginMention=@afbjorklund 12:27:37 JENKINS_SERVER_COOKIE=fd8a7b33dde6712f 12:27:37 _=/usr/bin/env 12:27:37 + cp -r hack/jenkins out/ 12:27:37 + '[' -d hack/prow ']' 12:27:37 + cp hack/prow/run_tests.py out/ 12:27:37 + bash -x hack/jenkins/minikube_cross_build_and_upload.sh 12:27:37 + set -eux -o pipefail 12:27:37 + readonly bucket=minikube-builds 12:27:37 + bucket=minikube-builds 12:27:37 ++ grep '^GO_VERSION' Makefile 12:27:37 ++ awk '{ print $3 }' 12:27:37 + WANT_GOLANG_VERSION=1.12.12 12:27:37 + ./hack/jenkins/installers/check_install_golang.sh 1.12.12 /usr/local 12:27:37 + (( 2 < 2 )) 12:27:37 + VERSION_TO_INSTALL=1.12.12 12:27:37 + INSTALL_PATH=/usr/local 12:27:37 + check_and_install_golang 12:27:37 + go version 12:27:37 ++ go version 12:27:37 + [[ go version go1.12.12 linux/amd64 =~ (([0-9]+)\.([0-9]+).([0-9]+).([.0-9]*)) ]] 12:27:37 + HOST_VERSION='1.12.12 ' 12:27:37 + '[' 1.12.12 = 1.12.12 ']' 12:27:37 + echo 'go version on the host looks good : 1.12.12 ' 12:27:37 go version on the host looks good : 1.12.12 12:27:37 + declare -rx BUILD_IN_DOCKER=y 12:27:37 + declare -rx GOPATH=/var/lib/jenkins/go 12:27:37 + declare -rx ISO_BUCKET=minikube-builds/5818 12:27:37 + declare -rx ISO_VERSION=testing 12:27:37 + declare -rx TAG=0173964362f85842ac75aed4906ee1d095cd350c 12:27:37 ++ docker ps -q 12:27:37 + docker kill 12:27:37 "docker kill" requires at least 1 argument(s). 12:27:37 See 'docker kill --help'. 12:27:37 12:27:37 Usage: docker kill [OPTIONS] CONTAINER [CONTAINER...] 12:27:37 12:27:37 Kill one or more running containers 12:27:37 + true 12:27:37 ++ docker ps -aq 12:27:37 + docker rm 12:27:37 "docker rm" requires at least 1 argument(s). 12:27:37 See 'docker rm --help'. 12:27:37 12:27:37 Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...] 12:27:37 12:27:37 Remove one or more containers 12:27:37 + true 12:27:37 + make -j 16 all 12:27:37 docker run --rm -e GOCACHE=/app/.cache -e IN_DOCKER=1 --user 108:113 -w /app -v /var/lib/jenkins/go/src/k8s.io/minikube:/app -v /var/lib/jenkins/go:/go --init k8s.gcr.io/kube-cross:v1.12.12-1 /bin/bash -c '/usr/bin/make pkg/minikube/assets/assets.go' 12:27:38 docker run --rm -e GOCACHE=/app/.cache -e IN_DOCKER=1 --user 108:113 -w /app -v /var/lib/jenkins/go/src/k8s.io/minikube:/app -v /var/lib/jenkins/go:/go --init k8s.gcr.io/kube-cross:v1.12.12-1 /bin/bash -c '/usr/bin/make pkg/minikube/translate/translations.go' 12:27:38 docker run --rm -e GOCACHE=/app/.cache -e IN_DOCKER=1 --user 108:113 -w /app -v /var/lib/jenkins/go/src/k8s.io/minikube:/app -v /var/lib/jenkins/go:/go --init karalabe/xgo-1.12.x /bin/bash -c 'CC=o64-clang CXX=o64-clang++ /usr/bin/make out/docker-machine-driver-hyperkit' 12:27:38 docker inspect -f '{{.Id}} {{.RepoTags}}' gcr.io/k8s-minikube/kvm-build-image:1.12.12 || make kvm-image 12:27:38 sha256:4fb396f43f56ec33217bbbfe42e077998192b7c7c31f29dfb2065ac20b0c9250 [gcr.io/k8s-minikube/kvm-build-image:1.12.12] 12:27:38 docker run --rm -e GOCACHE=/app/.cache -e IN_DOCKER=1 --user 108:113 -w /app -v /var/lib/jenkins/go/src/k8s.io/minikube:/app -v /var/lib/jenkins/go:/go --init gcr.io/k8s-minikube/kvm-build-image:1.12.12 /bin/bash -c '/usr/bin/make out/docker-machine-driver-kvm2 COMMIT="cc6ffe81ae4cc54063a6c13e70fc84a41c6f013a"' 12:27:39 which go-bindata || GO111MODULE=off GOBIN="/go/bin" go get github.com/jteeuwen/go-bindata/... 12:27:39 /go/bin/go-bindata 12:27:39 PATH="/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/go/bin" go-bindata -nomemcopy -o pkg/minikube/assets/assets.go -pkg assets deploy/addons/... 12:27:39 gofmt -s -w pkg/minikube/assets/assets.go 12:27:40 which go-bindata || GO111MODULE=off GOBIN="/go/bin" go get github.com/jteeuwen/go-bindata/... 12:27:40 /go/bin/go-bindata 12:27:40 PATH="/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/go/bin" go-bindata -nomemcopy -o pkg/minikube/translate/translations.go -pkg translate translations/... 12:27:40 gofmt -s -w pkg/minikube/translate/translations.go 12:27:41 go build \ 12:27:41 -installsuffix "static" \ 12:27:41 -ldflags="-X k8s.io/minikube/pkg/drivers/kvm.version=v1.5.2 -X k8s.io/minikube/pkg/drivers/kvm.gitCommitID=cc6ffe81ae4cc54063a6c13e70fc84a41c6f013a" \ 12:27:41 -tags "libvirt.1.3.1 without_lxc" \ 12:27:41 -o out/docker-machine-driver-kvm2 \ 12:27:41 k8s.io/minikube/cmd/drivers/kvm 12:27:43 which go-bindata || GO111MODULE=off GOBIN="/var/lib/jenkins/go/bin" go get github.com/jteeuwen/go-bindata/... 12:27:44 PATH="/var/lib/jenkins/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/go/bin:/usr/local/go/bin:/usr/local/go/bin:/usr/local/go/bin:/usr/local/go/bin:/var/lib/jenkins/go/bin" go-bindata -nomemcopy -o pkg/minikube/assets/assets.go -pkg assets deploy/addons/... 12:27:44 gofmt -s -w pkg/minikube/assets/assets.go 12:27:45 which go-bindata || GO111MODULE=off GOBIN="/var/lib/jenkins/go/bin" go get github.com/jteeuwen/go-bindata/... 12:27:45 PATH="/var/lib/jenkins/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/go/bin:/usr/local/go/bin:/usr/local/go/bin:/usr/local/go/bin:/usr/local/go/bin:/var/lib/jenkins/go/bin" go-bindata -nomemcopy -o pkg/minikube/translate/translations.go -pkg translate translations/... 12:27:45 gofmt -s -w pkg/minikube/translate/translations.go 12:27:45 docker run --rm -e GOCACHE=/app/.cache -e IN_DOCKER=1 --user 108:113 -w /app -v /var/lib/jenkins/go/src/k8s.io/minikube:/app -v /var/lib/jenkins/go:/go --init k8s.gcr.io/kube-cross:v1.12.12-1 /bin/bash -c '/usr/bin/make out/minikube-linux-amd64' 12:27:45 docker run --rm -e GOCACHE=/app/.cache -e IN_DOCKER=1 --user 108:113 -w /app -v /var/lib/jenkins/go/src/k8s.io/minikube:/app -v /var/lib/jenkins/go:/go --init k8s.gcr.io/kube-cross:v1.12.12-1 /bin/bash -c '/usr/bin/make out/minikube-linux-arm64' 12:27:45 docker run --rm -e GOCACHE=/app/.cache -e IN_DOCKER=1 --user 108:113 -w /app -v /var/lib/jenkins/go/src/k8s.io/minikube:/app -v /var/lib/jenkins/go:/go --init k8s.gcr.io/kube-cross:v1.12.12-1 /bin/bash -c '/usr/bin/make out/minikube-darwin-amd64' 12:27:45 docker run --rm -e GOCACHE=/app/.cache -e IN_DOCKER=1 --user 108:113 -w /app -v /var/lib/jenkins/go/src/k8s.io/minikube:/app -v /var/lib/jenkins/go:/go --init k8s.gcr.io/kube-cross:v1.12.12-1 /bin/bash -c '/usr/bin/make out/minikube-windows-amd64' 12:27:45 GOOS=linux CGO_ENABLED=0 go build -o out/gvisor-addon cmd/gvisor/gvisor.go 12:27:48 GOOS="linux" GOARCH="amd64" go build -tags "container_image_ostree_stub containers_image_openpgp go_getter_nos3 go_getter_nogcs" -ldflags="-X k8s.io/minikube/pkg/version.version=v1.5.2 -X k8s.io/minikube/pkg/version.isoVersion=v1.5.1 -X k8s.io/minikube/pkg/version.isoPath=minikube/iso -X k8s.io/minikube/pkg/version.gitCommitID="cc6ffe81ae4cc54063a6c13e70fc84a41c6f013a"" -a -o out/minikube-linux-amd64 k8s.io/minikube/cmd/minikube 12:27:49 GOOS="darwin" GOARCH="amd64" go build -tags "container_image_ostree_stub containers_image_openpgp go_getter_nos3 go_getter_nogcs" -ldflags="-X k8s.io/minikube/pkg/version.version=v1.5.2 -X k8s.io/minikube/pkg/version.isoVersion=v1.5.1 -X k8s.io/minikube/pkg/version.isoPath=minikube/iso -X k8s.io/minikube/pkg/version.gitCommitID="cc6ffe81ae4cc54063a6c13e70fc84a41c6f013a"" -a -o out/minikube-darwin-amd64 k8s.io/minikube/cmd/minikube 12:27:50 GOOS="linux" GOARCH="arm64" go build -tags "container_image_ostree_stub containers_image_openpgp go_getter_nos3 go_getter_nogcs" -ldflags="-X k8s.io/minikube/pkg/version.version=v1.5.2 -X k8s.io/minikube/pkg/version.isoVersion=v1.5.1 -X k8s.io/minikube/pkg/version.isoPath=minikube/iso -X k8s.io/minikube/pkg/version.gitCommitID="cc6ffe81ae4cc54063a6c13e70fc84a41c6f013a"" -a -o out/minikube-linux-arm64 k8s.io/minikube/cmd/minikube 12:27:50 GOOS="windows" GOARCH="amd64" go build -tags "container_image_ostree_stub containers_image_openpgp go_getter_nos3 go_getter_nogcs" -ldflags="-X k8s.io/minikube/pkg/version.version=v1.5.2 -X k8s.io/minikube/pkg/version.isoVersion=v1.5.1 -X k8s.io/minikube/pkg/version.isoPath=minikube/iso -X k8s.io/minikube/pkg/version.gitCommitID="cc6ffe81ae4cc54063a6c13e70fc84a41c6f013a"" -a -o out/minikube-windows-amd64 k8s.io/minikube/cmd/minikube 12:27:59 /build.sh: line 65: /usr/bin/dirname: Argument list too long 12:27:59 /build.sh: line 65: /usr/bin/dirname: Argument list too long 12:27:59 /build.sh: line 65: /usr/bin/dirname: Argument list too long 12:27:59 /build.sh: line 65: /usr/bin/dirname: Argument list too long 12:27:59 /build.sh: line 65: /usr/bin/dirname: Argument list too long 12:27:59 /build.sh: line 65: /usr/bin/dirname: Argument list too long 12:27:59 /build.sh: line 65: /usr/bin/dirname: Argument list too long 12:27:59 /build.sh: line 65: /usr/bin/dirname: Argument list too long 12:27:59 /build.sh: line 65: /usr/bin/dirname: Argument list too long |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
there are failures on jenkins :
12:27:59 /build.sh: line 65: /usr/bin/dirname: Argument list too long
Actually I was more curious what |
Okay, I can reproduce this too. Seems like "Entrypoint": [
"/build.sh"
], https://github.com/karalabe/xgo/blob/master/docker/base/build.sh When we no longer override that (with bash), then it goes into a loop with the parameters:
IMPORT_PATH=$1
while [ "$IMPORT_PATH" != "." ]; do
export GOPATH=$GOPATH:$GOPATH_ROOT/$IMPORT_PATH/Godeps/_workspace
IMPORT_PATH=`dirname $IMPORT_PATH`
done Parameters being: |
The bash shell is not very good at playing init(1), let tini handle this instead by doing `docker run --init`. This makes it forward signals properly to e.g. make, and also reaps processes for long-running containers. However, we _need_ to override the entrypoint of the karalabe/xgo image, since it'll self-destruct otherwise. It (/build.sh) expects the command to be the import path and cannot handle getting the bash command line to run.
0173964
to
c668631
Compare
I don't think those Hyper-V and HyperKit errors have anything to do with this Docker change, and the failure to download kvm2 when running with virtualbox is also very strange (who asked for KVM ?).
The change itself seems to be working OK here. Now starting |
The bash shell is not very good at playing init(1), let
tini handle this instead by doing
docker run --init
.This makes it forward signals properly to e.g. make,
and also reaps processes for long-running containers.