From 132c4271dc0b1867766c8fc482e6a9b4b94a1e64 Mon Sep 17 00:00:00 2001 From: Mike Danese Date: Thu, 18 Feb 2016 15:35:23 -0800 Subject: [PATCH] add linux fastbuild option to ./build/release.sh --- Makefile | 2 +- build/common.sh | 5 ++++ hack/lib/golang.sh | 64 ++++++++++++++++++++++++++++------------------ 3 files changed, 45 insertions(+), 26 deletions(-) diff --git a/Makefile b/Makefile index e1ec649eb07d..402dfbcce47f 100644 --- a/Makefile +++ b/Makefile @@ -141,6 +141,6 @@ release: # Example: # make release-skip-tests release-skip-tests quick-release: - KUBE_RELEASE_RUN_TESTS=n build/release.sh + KUBE_RELEASE_RUN_TESTS=n KUBE_FASTBUILD=true build/release.sh .PHONY: release-skip-tests quick-release diff --git a/build/common.sh b/build/common.sh index 7ae1c4d18ae1..0caccee1c522 100755 --- a/build/common.sh +++ b/build/common.sh @@ -580,6 +580,11 @@ function kube::build::run_build_command() { docker_run_opts+=(-e "KUBERNETES_CONTRIB=${KUBERNETES_CONTRIB}") fi + docker_run_opts+=( + --env "KUBE_FASTBUILD=${KUBE_FASTBUILD:-false}" + --env "KUBE_BUILDER_OS=${OSTYPE:-notdetected}" + ) + # If we have stdin we can run interactive. This allows things like 'shell.sh' # to work. However, if we run this way and don't have stdin, then it ends up # running in a daemon-ish mode. So if we don't have a stdin, we explicitly diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index e7df21ec314d..8529d6dd6ca6 100755 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -47,11 +47,45 @@ kube::golang::server_targets() { readonly KUBE_SERVER_TARGETS=($(kube::golang::server_targets)) readonly KUBE_SERVER_BINARIES=("${KUBE_SERVER_TARGETS[@]##*/}") -# The server platform we are building on. -readonly KUBE_SERVER_PLATFORMS=( - linux/amd64 - linux/arm -) +if [[ "${KUBE_FASTBUILD:-}" == "true" ]]; then + readonly KUBE_SERVER_PLATFORMS=(linux/amd64) + readonly KUBE_TEST_PLATFORMS=(linux/amd64) + if [[ "${KUBE_BUILDER_OS:-}" == "darwin"* ]]; then + readonly KUBE_CLIENT_PLATFORMS=( + darwin/amd64 + linux/amd64 + ) + else + readonly KUBE_CLIENT_PLATFORMS=(linux/amd64) + fi +else + + # The server platform we are building on. + readonly KUBE_SERVER_PLATFORMS=( + linux/amd64 + linux/arm + ) + + # If we update this we should also update the set of golang compilers we build + # in 'build/build-image/cross/Dockerfile'. However, it's only a bit faster since go 1.5, not mandatory + readonly KUBE_CLIENT_PLATFORMS=( + linux/amd64 + linux/386 + linux/arm + darwin/amd64 + darwin/386 + windows/amd64 + windows/386 + ) + + # Which platforms we should compile test targets for. Not all client platforms need these tests + readonly KUBE_TEST_PLATFORMS=( + linux/amd64 + darwin/amd64 + windows/amd64 + linux/arm + ) +fi # The set of client targets that we are building for all platforms readonly KUBE_CLIENT_TARGETS=( @@ -60,18 +94,6 @@ readonly KUBE_CLIENT_TARGETS=( readonly KUBE_CLIENT_BINARIES=("${KUBE_CLIENT_TARGETS[@]##*/}") readonly KUBE_CLIENT_BINARIES_WIN=("${KUBE_CLIENT_BINARIES[@]/%/.exe}") -# If we update this we should also update the set of golang compilers we build -# in 'build/build-image/cross/Dockerfile'. However, it's only a bit faster since go 1.5, not mandatory -readonly KUBE_CLIENT_PLATFORMS=( - linux/amd64 - linux/386 - linux/arm - darwin/amd64 - darwin/386 - windows/amd64 - windows/386 -) - # The set of test targets that we are building for all platforms kube::golang::test_targets() { local targets=( @@ -108,14 +130,6 @@ readonly KUBE_TEST_PORTABLE=( hack/lib ) -# Which platforms we should compile test targets for. Not all client platforms need these tests -readonly KUBE_TEST_PLATFORMS=( - linux/amd64 - darwin/amd64 - windows/amd64 - linux/arm -) - # Gigabytes desired for parallel platform builds. 11 is fairly # arbitrary, but is a reasonable splitting point for 2015 # laptops-versus-not.