From 0f9178619832c273b36edbcba445a7881ebf1c14 Mon Sep 17 00:00:00 2001 From: Joe Beda Date: Mon, 10 Nov 2014 15:35:48 -0800 Subject: [PATCH] Upload extra artifacts with build (cherry picked from commit 8ffa1f665709edf4a1a0d2c7035ec6f98e09bd05) --- build/common.sh | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/build/common.sh b/build/common.sh index e34e9de1d0f..4ae4b70129c 100644 --- a/build/common.sh +++ b/build/common.sh @@ -35,9 +35,8 @@ readonly KUBE_GCS_UPLOAD_RELEASE="${KUBE_GCS_UPLOAD_RELEASE:-n}" readonly KUBE_GCS_NO_CACHING="${KUBE_GCS_NO_CACHING:-y}" readonly KUBE_GCS_MAKE_PUBLIC="${KUBE_GCS_MAKE_PUBLIC:-y}" # KUBE_GCS_RELEASE_BUCKET default: kubernetes-releases-${project_hash} -# KUBE_GCS_RELEASE_PREFIX default: devel/ -# KUBE_GCS_DOCKER_REG_PREFIX default: docker-reg/ - +readonly KUBE_GCS_RELEASE_PREFIX=${KUBE_GCS_RELEASE_PREFIX-devel/} +readonly KUBE_GCS_DOCKER_REG_PREFIX=${KUBE_GCS_DOCKER_REG_PREFIX-docker-reg/} # Constants @@ -559,7 +558,7 @@ function kube::release::gcs::release() { kube::release::gcs::verify_prereqs kube::release::gcs::ensure_release_bucket kube::release::gcs::push_images - kube::release::gcs::copy_release_tarballs + kube::release::gcs::copy_release_artifacts } # Verify things are set up for uploading to GCS @@ -598,8 +597,6 @@ function kube::release::gcs::ensure_release_bucket() { local project_hash project_hash=$(kube::build::short_hash "$GCLOUD_PROJECT") KUBE_GCS_RELEASE_BUCKET=${KUBE_GCS_RELEASE_BUCKET-kubernetes-releases-${project_hash}} - KUBE_GCS_RELEASE_PREFIX=${KUBE_GCS_RELEASE_PREFIX-devel/} - KUBE_GCS_DOCKER_REG_PREFIX=${KUBE_GCS_DOCKER_REG_PREFIX-docker-reg/} if ! gsutil ls "gs://${KUBE_GCS_RELEASE_BUCKET}" >/dev/null 2>&1 ; then echo "Creating Google Cloud Storage bucket: $RELEASE_BUCKET" @@ -660,7 +657,7 @@ function kube::release::gcs::push_images() { done } -function kube::release::gcs::copy_release_tarballs() { +function kube::release::gcs::copy_release_artifacts() { # TODO: This isn't atomic. There will be points in time where there will be # no active release. Also, if something fails, the release could be half- # copied. The real way to do this would perhaps to have some sort of release @@ -672,17 +669,27 @@ function kube::release::gcs::copy_release_tarballs() { gcs_options=("-h" "Cache-Control:private, max-age=0") fi - echo "+++ Copying client tarballs to ${gcs_destination}" + echo "+++ Copying release artifacts to ${gcs_destination}" # First delete all objects at the destination gsutil -q rm -f -R "${gcs_destination}" >/dev/null 2>&1 || true # Now upload everything in release directory - gsutil -m "${gcs_options[@]-}" cp -r "${RELEASE_DIR}"/* "${gcs_destination}" >/dev/null 2>&1 + gsutil -m "${gcs_options[@]+${gcs_options[@]}}" cp -r "${RELEASE_DIR}"/* "${gcs_destination}" + + # Having the "template" scripts from the GCE cluster deploy hosted with the + # release is useful for GKE. Copy everything from that directory up also. + gsutil -m "${gcs_options[@]+${gcs_options[@]}}" cp "${KUBE_ROOT}/cluster/gce/templates/*.sh" "${gcs_destination}extra/gce-templates/" + + # TODO(jbeda): Generate an HTML page with links for this release so it is easy + # to see it. For extra credit, generate a dynamic page that builds up the + # release list using the GCS JSON API. Use Angular and Bootstrap for extra + # extra credit. if [[ ${KUBE_GCS_MAKE_PUBLIC} =~ ^[yY]$ ]]; then + echo "+++ Marking all uploaded objects public" gsutil acl ch -R -g all:R "${gcs_destination}" >/dev/null 2>&1 fi - gsutil ls -lh "${gcs_destination}" + gsutil ls -lhr "${gcs_destination}" }