From e05f4a3facd4106bccdc5ef9eb9401c38391857d Mon Sep 17 00:00:00 2001 From: Vinayak Goyal Date: Sat, 13 Feb 2021 17:10:32 -0800 Subject: [PATCH] Use ARG and --build-arg instead of sed for build-image. --- build/build-image/Dockerfile | 4 +++- build/common.sh | 16 ++++------------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/build/build-image/Dockerfile b/build/build-image/Dockerfile index 64e2c4f9cf4..0fcaa860e46 100644 --- a/build/build-image/Dockerfile +++ b/build/build-image/Dockerfile @@ -13,7 +13,9 @@ # limitations under the License. # This file creates a standard build environment for building Kubernetes -FROM k8s.gcr.io/build-image/kube-cross:KUBE_BUILD_IMAGE_CROSS_TAG +ARG KUBE_BUILD_IMAGE_CROSS_TAG + +FROM k8s.gcr.io/build-image/kube-cross:${KUBE_BUILD_IMAGE_CROSS_TAG} # Mark this as a kube-build container RUN touch /kube-build-image diff --git a/build/common.sh b/build/common.sh index 06f19465984..e7c2e2324d9 100755 --- a/build/common.sh +++ b/build/common.sh @@ -197,15 +197,6 @@ function kube::build::ensure_rsync() { fi } -function kube::build::update_dockerfile() { - if kube::build::is_gnu_sed; then - sed_opts=(-i) - else - sed_opts=(-i '') - fi - sed "${sed_opts[@]}" "s/KUBE_BUILD_IMAGE_CROSS_TAG/${KUBE_BUILD_IMAGE_CROSS_TAG}/" "${LOCAL_OUTPUT_BUILD_CONTEXT}/Dockerfile" -} - function kube::build::ensure_docker_in_path() { if [[ -z "$(which docker)" ]]; then kube::log::error "Can't find 'docker' in PATH, please fix and retry." @@ -367,8 +358,7 @@ function kube::build::build_image() { dd if=/dev/urandom bs=512 count=1 2>/dev/null | LC_ALL=C tr -dc 'A-Za-z0-9' | dd bs=32 count=1 2>/dev/null > "${LOCAL_OUTPUT_BUILD_CONTEXT}/rsyncd.password" chmod go= "${LOCAL_OUTPUT_BUILD_CONTEXT}/rsyncd.password" - kube::build::update_dockerfile - kube::build::docker_build "${KUBE_BUILD_IMAGE}" "${LOCAL_OUTPUT_BUILD_CONTEXT}" 'false' + kube::build::docker_build "${KUBE_BUILD_IMAGE}" "${LOCAL_OUTPUT_BUILD_CONTEXT}" 'false' "--build-arg=KUBE_BUILD_IMAGE_CROSS_TAG=${KUBE_BUILD_IMAGE_CROSS_TAG}" # Clean up old versions of everything kube::build::docker_delete_old_containers "${KUBE_BUILD_CONTAINER_NAME_BASE}" "${KUBE_BUILD_CONTAINER_NAME}" @@ -384,11 +374,13 @@ function kube::build::build_image() { # $1 is the name of the image to build # $2 is the location of the "context" directory, with the Dockerfile at the root. # $3 is the value to set the --pull flag for docker build; true by default +# $4 is the set of --build-args for docker. function kube::build::docker_build() { local -r image=$1 local -r context_dir=$2 local -r pull="${3:-true}" - local -ra build_cmd=("${DOCKER[@]}" build -t "${image}" "--pull=${pull}" "${context_dir}") + local -r build_args=$4 + local -ra build_cmd=("${DOCKER[@]}" build -t "${image}" "--pull=${pull}" "${build_args}" "${context_dir}") kube::log::status "Building Docker image ${image}" local docker_output