diff --git a/build/build-official-release.sh b/build/build-official-release.sh deleted file mode 100755 index d55bb0e7dea..00000000000 --- a/build/build-official-release.sh +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/bash - -# Copyright 2015 The Kubernetes Authors All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Builds an official release based on a git tag, with instructions for -# how to proceed after the bits are built. - -set -o errexit -set -o nounset -set -o pipefail - -# Get the md5 (duplicated from common.sh, but don't want to pull in -# all of common.sh here) -function md5() { - if which md5 >/dev/null 2>&1; then - md5 -q "$1" - else - md5sum "$1" | awk '{ print $1 }' - fi -} - -# Get the sha1 (duplicated from common.sh, but don't want to pull in -# all of common.sh here) -function sha1() { - if which shasum >/dev/null 2>&1; then - shasum -a1 "$1" | awk '{ print $1 }' - else - sha1sum "$1" | awk '{ print $1 }' - fi -} - -declare -r KUBE_GITHUB="https://github.com/GoogleCloudPlatform/kubernetes.git" -declare -r KUBE_RELEASE_VERSION=${1-} -declare -r KUBE_RELEASE_UMASK=${KUBE_RELEASE_UMASK:-022} - -VERSION_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$" -[[ ${KUBE_RELEASE_VERSION} =~ ${VERSION_REGEX} ]] || { - echo "!!! You must specify the version you are releasing in the form of '${VERSION_REGEX}'" >&2 - exit 1 -} - -declare -r KUBE_BUILD_DIR="/tmp/kubernetes-release-${KUBE_RELEASE_VERSION}-$(date +%s)" - -# Set the default umask for the release. This ensures consistency -# across our release builds. -umask "${KUBE_RELEASE_UMASK}" - -echo "Cloning ${KUBE_GITHUB} at ${KUBE_RELEASE_VERSION}." -echo -echo "NOTE: Ignore the deatched HEAD warning you're about to get. We want that." -echo -git clone ${KUBE_GITHUB} -b "${KUBE_RELEASE_VERSION}" "${KUBE_BUILD_DIR}" - -# !!! REMINDER !!! -# -# Past this point, you are dealing with a different release. Don't -# assume you're executing code from the same repo as this script is -# running in. This needs to be a version agnostic build. - -echo -echo "Cloned, building release." -echo - -cd "${KUBE_BUILD_DIR}" -export KUBE_RELEASE_RUN_TESTS=n -export KUBE_SKIP_CONFIRMATIONS=y -make release - -if ${KUBE_BUILD_DIR}/cluster/kubectl.sh version | grep Client | grep dirty; then - echo "!!! Tag at invalid point, or something else is bad. Build is dirty. Don't push this build." >&2 - exit 1 -fi - -ln -s ${KUBE_BUILD_DIR}/_output/release-tars/kubernetes.tar.gz ${KUBE_BUILD_DIR} - -MD5=$(md5 "${KUBE_BUILD_DIR}/kubernetes.tar.gz") -SHA1=$(sha1 "${KUBE_BUILD_DIR}/kubernetes.tar.gz") - -echo "" -echo "Success! You must now do the following: (you may want to cut" -echo " and paste these instructions elsewhere, step 1 can be spammy)" -echo "" -echo " 1) (cd ${KUBE_BUILD_DIR}; build/push-official-release.sh)" -echo " 2) Go to https://github.com/GoogleCloudPlatform/kubernetes/releases" -echo " and create a new 'Release ${KUBE_RELEASE_VERSION} Candidate' release" -echo " 3) Upload the ${KUBE_BUILD_DIR}/kubernetes.tar.gz to GitHub" -echo " 4) Use this table for the hashes:" -echo "" -echo "binary | hash alg | hash" -echo "------ | -------- | ----" -echo "\`kubernetes.tar.gz\` | md5 | \`${MD5}\`" -echo "\`kubernetes.tar.gz\` | sha1 | \`${SHA1}\`" -echo "" -echo " 5) Ensure all the binaries are in place on GitHub and GCS before cleaning." -echo " 6) (cd ${KUBE_BUILD_DIR}; make clean; cd -; rm -rf ${KUBE_BUILD_DIR})" -echo "" diff --git a/build/common.sh b/build/common.sh index cc16b6d14d2..764006c0bec 100644 --- a/build/common.sh +++ b/build/common.sh @@ -185,21 +185,6 @@ function kube::build::verify_prereqs() { KUBE_BUILD_CONTAINER_NAME="kube-build-${KUBE_ROOT_HASH}" KUBE_BUILD_DATA_CONTAINER_NAME="kube-build-data-${KUBE_ROOT_HASH}" DOCKER_MOUNT_ARGS=("${DOCKER_MOUNT_ARGS_BASE[@]}" --volumes-from "${KUBE_BUILD_DATA_CONTAINER_NAME}") - - # Find gnu tar if it is available, bomb out if not. - TAR=tar - if which gtar &>/dev/null; then - TAR=gtar - else - if which gnutar &>/dev/null; then - TAR=gnutar - fi - fi - if ! "${TAR}" --version | grep -q GNU; then - echo " !!! Cannot find GNU tar. Build on Linux or install GNU tar" - echo " on Mac OS X (brew install gnu-tar)." - exit 1 - fi } # --------------------------------------------------------------------------- @@ -352,7 +337,7 @@ function kube::build::build_image() { kube::build::build_image_cross mkdir -p "${build_context_dir}" - "${TAR}" czf "${build_context_dir}/kube-source.tar.gz" $(kube::build::source_targets) + tar czf "${build_context_dir}/kube-source.tar.gz" $(kube::build::source_targets) kube::version::get_version_vars kube::version::save_version_vars "${build_context_dir}/kube-version-defs" @@ -778,7 +763,26 @@ function kube::release::create_tarball() { local tarfile=$1 local stagingdir=$2 - "${TAR}" czf "${tarfile}" -C "${stagingdir}" kubernetes --owner=0 --group=0 + # Find gnu tar if it is available + local tar=tar + if which gtar &>/dev/null; then + tar=gtar + else + if which gnutar &>/dev/null; then + tar=gnutar + fi + fi + + local tar_cmd=("$tar" "czf" "${tarfile}" "-C" "${stagingdir}" "kubernetes") + if "$tar" --version | grep -q GNU; then + tar_cmd=("${tar_cmd[@]}" "--owner=0" "--group=0") + else + echo " !!! GNU tar not available. User names will be embedded in output and" + echo " release tars are not official. Build on Linux or install GNU tar" + echo " on Mac OS X (brew install gnu-tar)" + fi + + "${tar_cmd[@]}" } # --------------------------------------------------------------------------- @@ -846,7 +850,7 @@ function kube::release::gcs::stage_and_hash() { srcdir=$(dirname ${src}) srcthing=$(basename ${src}) mkdir -p ${GCS_STAGE}/${dst} - "${TAR}" c -C ${srcdir} ${srcthing} | "${TAR}" x -C ${GCS_STAGE}/${dst} + tar c -C ${srcdir} ${srcthing} | tar x -C ${GCS_STAGE}/${dst} done } diff --git a/build/push-official-release.sh b/build/push-official-release.sh index 0aefbd33be0..03617d30e05 100755 --- a/build/push-official-release.sh +++ b/build/push-official-release.sh @@ -39,10 +39,5 @@ KUBE_GCS_LATEST_CONTENTS=${KUBE_RELEASE_VERSION} KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. source "$KUBE_ROOT/build/common.sh" -if ${KUBE_ROOT}/cluster/kubectl.sh version | grep Client | grep dirty; then - echo "!!! Tag at invalid point, or something else is bad. Build is dirty. Don't push this build." >&2 - exit 1 -fi - kube::release::gcs::release kube::release::gcs::publish_latest_official