fix(bootstrap_sdk): Move gsutil code to release_util.sh

Sync up bootstrap_sdk with other tools by using the common upload
functions. As part of this refactor release_util a bit to provide a
truly generic upload function.
This commit is contained in:
Michael Marineau 2013-07-14 13:00:41 -04:00
parent d4543baaca
commit 6b336e17b2
2 changed files with 52 additions and 49 deletions

View File

@ -36,17 +36,11 @@ SCRIPT_ROOT=$(dirname $(readlink -f "$0"))
TYPE="coreos-sdk"
ARCH=$(portageq envvar ARCH)
DEFAULT_PROFILE="coreos:default/linux/${ARCH}/10.0"
UPLOAD_ROOT="gs://storage.core-os.net/coreos/sdk/${ARCH}"
UPLOAD_DEFAULT=${FLAGS_FALSE}
if [[ ${COREOS_OFFICIAL:-0} -eq 1 ]]; then
UPLOAD_DEFAULT=${FLAGS_TRUE}
fi
. "${SCRIPT_ROOT}/lib/catalyst.sh" || exit 1
DEFINE_boolean parallel ${FLAGS_TRUE} "Enable parallelism in gsutil."
DEFINE_boolean upload ${UPLOAD_DEFAULT} \
"Upload final tarball and all packages via gsutil."
# include upload options
. "${BUILD_LIBRARY_DIR}/release_util.sh" || exit 1
## Define the stage4 config template
catalyst_stage4() {
@ -60,21 +54,7 @@ catalyst_stage_default
}
catalyst_init "$@"
# Search for .boto, this runs under sudo so ~/.boto may not be right
if [[ ${FLAGS_upload} -eq ${FLAGS_TRUE} ]]; then
for boto in "$HOME/.boto" "/home/$SUDO_USER/.boto" /etc/boto.cfg; do
if [[ -f "$boto" ]]; then
info "Using boto config $boto"
export BOTO_CONFIG="$boto"
break
fi
done
if [[ ! -f "$BOTO_CONFIG" ]]; then
die_notrace "Please run gsutil config to create ~/.boto"
fi
fi
check_gsutil_opts
catalyst_build
info "Build complete! Changing output name to something more sensible."
@ -100,21 +80,9 @@ done
info "SDK ready: $BUILDS/${release_name}"
GSUTIL_OPTS=
if [[ ${FLAGS_parallel} -eq ${FLAGS_TRUE} ]]; then
GSUTIL_OPTS="-m"
fi
if [[ ${FLAGS_upload} -eq ${FLAGS_TRUE} ]]; then
info "Uploading tarball"
gsutil ${GSUTIL_OPTS} cp \
"$BUILDS/${release_name}" \
"$BUILDS/${release_name}.CONTENTS" \
"$BUILDS/${release_name}.DIGESTS" \
"${UPLOAD_ROOT}/${FLAGS_version}/"
info "Uploading packages"
gsutil ${GSUTIL_OPTS} cp -R "${BINPKGS}"/* \
"${UPLOAD_ROOT}/${FLAGS_version}/pkgs/"
fi
def_upload_path="${UPLOAD_ROOT}/coreos/sdk/${ARCH}/${FLAGS_version}"
upload_files "tarball" "${def_upload_path}" "" "$BUILDS/${release_name}" \
"$BUILDS/${release_name}.CONTENTS" "$BUILDS/${release_name}.DIGESTS"
upload_files "packages" "${def_upload_path}" "pkgs/" "${BINPKGS}"/*
command_completed

View File

@ -32,20 +32,55 @@ check_gsutil_opts() {
UPLOAD_PATH="${FLAGS_upload_path%%/}"
fi
if [[ ! -f "$HOME/.boto" ]]; then
# Search for .boto, may be run via sudo
local boto
for boto in "$HOME/.boto" "/home/$SUDO_USER/.boto"; do
if [[ -f "$boto" ]]; then
info "Using boto config $boto"
export BOTO_CONFIG="$boto"
break
fi
done
if [[ ! -f "$BOTO_CONFIG" ]]; then
die_notrace "Please run gsutil config to create ~/.boto"
fi
}
# Generic upload function
# Usage: upload_files "file type" "${UPLOAD_ROOT}/default/path" "" files...
# arg1: file type reported via log
# arg2: default upload path, overridden by --upload_path
# arg3: upload path suffix that can't be overridden, must end in /
# argv: remaining args are files or directories to upload
upload_files() {
[[ ${FLAGS_upload} -eq ${FLAGS_TRUE} ]] || return 0
local msg="$1"
local local_upload_path="$2"
local extra_upload_suffix="$3"
shift 3
if [[ -n "${UPLOAD_PATH}" ]]; then
local_upload_path="${UPLOAD_PATH}"
fi
if [[ -n "${extra_upload_suffix}" && "${extra_upload_suffix}" != */ ]]
then
die "upload suffix '${extra_upload_suffix}' doesn't end in /"
fi
info "Uploading ${msg} to ${local_upload_path}"
gsutil ${GSUTIL_OPTS} cp -R "$@" \
"${local_upload_path}/${extra_upload_suffix}"
}
upload_packages() {
[[ ${FLAGS_upload} -eq ${FLAGS_TRUE} ]] || return 0
[[ -n "${BOARD}" ]] || die "board_options.sh must be sourced first"
local BOARD_PACKAGES="${1:-"${BOARD_ROOT}/packages"}"
: ${UPLOAD_PATH:="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}"}
info "Uploading packages"
gsutil ${GSUTIL_OPTS} cp -R "${BOARD_PACKAGES}"/* "${UPLOAD_PATH}/pkgs/"
local board_packages="${1:-"${BOARD_ROOT}/packages"}"
local def_upload_path="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}"
upload_files packages ${def_upload_path} "pkgs/" "${board_packages}"/*
}
make_digests() {
@ -66,7 +101,6 @@ upload_image() {
[[ -n "${BOARD}" ]] || die "board_options.sh must be sourced first"
local BUILT_IMAGE="$1"
: ${UPLOAD_PATH:="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}"}
if [[ ! -f "${BUILT_IMAGE}" ]]; then
die "Image '${BUILT_IMAGE}' does not exist!"
@ -83,7 +117,8 @@ upload_image() {
# produces for the SDK tarballs and up upload it too.
make_digests "${BUILT_IMAGE}"
info "Uploading ${BUILT_IMAGE##*/}"
gsutil ${GSUTIL_OPTS} cp "${BUILT_IMAGE}" \
"${BUILT_IMAGE}.DIGESTS" "${UPLOAD_PATH}/"
local log_msg="${BUILT_IMAGE##*/}"
local def_upload_path="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}"
upload_files "${log_msg}" "${def_upload_path}" "" \
"${BUILT_IMAGE}" "${BUILT_IMAGE}.DIGESTS"
}