diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index c06fe6988f6..5ebedbf5bf3 100644 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -237,10 +237,13 @@ kube::golang::build_binaries() { local goflags eval "goflags=(${KUBE_GOFLAGS:-})" + local use_go_build local -a targets=() local arg for arg; do - if [[ "${arg}" == -* ]]; then + if [[ "${arg}" == "--use_go_build" ]]; then + use_go_build=true + elif [[ "${arg}" == -* ]]; then # Assume arguments starting with a dash are flags to pass to go. goflags+=("${arg}") else @@ -264,9 +267,25 @@ kube::golang::build_binaries() { for platform in "${platforms[@]}"; do kube::golang::set_platform_envs "${platform}" kube::log::status "Building go targets for ${platform}:" "${targets[@]}" - go install "${goflags[@]:+${goflags[@]}}" \ - -ldflags "${version_ldflags}" \ - "${binaries[@]}" + if [[ -n ${use_go_build:-} ]]; then + # Try and replicate the native binary placement of go install without calling go install + local output_path="${KUBE_GOPATH}/bin" + if [[ $platform != $host_platform ]]; then + output_path="${output_path}/${platform//\//_}" + fi + + for binary in "${binaries[@]}"; do + local bin=$(basename "${binary}") + go build -o "${output_path}/${bin}" \ + "${goflags[@]:+${goflags[@]}}" \ + -ldflags "${version_ldflags}" \ + "${binary}" + done + else + go install "${goflags[@]:+${goflags[@]}}" \ + -ldflags "${version_ldflags}" \ + "${binaries[@]}" + fi done ) } diff --git a/hack/test-integration.sh b/hack/test-integration.sh index b91beef005b..a9aaf1146a8 100755 --- a/hack/test-integration.sh +++ b/hack/test-integration.sh @@ -14,6 +14,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +# any command line arguments will be passed to hack/build_go.sh to build the +# cmd/integration binary. --use_go_build is a legitimate argument, as are +# any other build time arguments. + set -o errexit set -o nounset set -o pipefail @@ -26,9 +30,7 @@ cleanup() { kube::log::status "Integration test cleanup complete" } -if [[ -z ${KUBE_NO_BUILD_INTEGRATION-} ]]; then - "${KUBE_ROOT}/hack/build-go.sh" cmd/integration -fi +"${KUBE_ROOT}/hack/build-go.sh" "$@" cmd/integration # Run cleanup to stop etcd on interrupt or other kill signal. trap cleanup HUP INT QUIT TERM