#!/usr/bin/env bash # Copyright The Helm Authors. # # 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. set -euo pipefail # Skip on pull request builds if [[ -n "${CIRCLE_PR_NUMBER:-}" ]]; then exit fi : ${GCLOUD_SERVICE_KEY:?"GCLOUD_SERVICE_KEY environment variable is not set"} : ${PROJECT_NAME:?"PROJECT_NAME environment variable is not set"} : ${AZURE_STORAGE_CONNECTION_STRING:?"AZURE_STORAGE_CONNECTION_STRING environment variable is not set"} : ${AZURE_STORAGE_CONTAINER_NAME:?"AZURE_STORAGE_CONTAINER_NAME environment variable is not set"} VERSION= if [[ -n "${CIRCLE_TAG:-}" ]]; then VERSION="${CIRCLE_TAG}" else # Canary version is used with helm init --canary-image flag. # Does not push canary binary which is Helm v3. VERSION="canary" fi echo "Install docker client" VER="17.09.0-ce" curl -L -o /tmp/docker-$VER.tgz https://download.docker.com/linux/static/stable/x86_64/docker-$VER.tgz tar -xz -C /tmp -f /tmp/docker-$VER.tgz mv /tmp/docker/* /usr/bin echo "Install gcloud components" export CLOUDSDK_CORE_DISABLE_PROMPTS=1 curl https://sdk.cloud.google.com | bash ${HOME}/google-cloud-sdk/bin/gcloud --quiet components update echo "Configuring GitHub Container Repository configuration" echo ${GH_TOKEN_PUSH_TILLER} | docker login ghcr.io -u helm-bot --password-stdin echo "Configuring gcloud authentication" echo "${GCLOUD_SERVICE_KEY}" | base64 --decode > "${HOME}/gcloud-service-key.json" ${HOME}/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file "${HOME}/gcloud-service-key.json" ${HOME}/google-cloud-sdk/bin/gcloud config set project "${PROJECT_NAME}" docker login -u _json_key -p "$(cat ${HOME}/gcloud-service-key.json)" https://gcr.io echo "Configuring Docker Hub configuration" echo ${DOCKER_PASS} | docker login -u ${DOCKER_USER} --password-stdin # echo "Configuring Quay configuration" echo ${QUAY_PASS} | docker login quay.io -u ${QUAY_USER} --password-stdin echo "Building the tiller image" make docker-build VERSION="${VERSION}" # Image is pushed to GitHub container repository (ghcr.io), # GCR, Docker Hub, and Quay. echo "Pushing image to ghcr.io" docker push "ghcr.io/helm/tiller:${VERSION}" echo "Pushing image to gcr.io" docker tag "ghcr.io/helm/tiller:${VERSION}" "gcr.io/kubernetes-helm/tiller:${VERSION}" docker push "gcr.io/kubernetes-helm/tiller:${VERSION}" echo "Pushing image to Docker Hub" docker tag "ghcr.io/helm/tiller:${VERSION}" "helmpack/tiller:${VERSION}" docker push "helmpack/tiller:${VERSION}" echo "Pushing image to Quay" docker tag "ghcr.io/helm/tiller:${VERSION}" "quay.io/helmpack/tiller:${VERSION}" docker push "quay.io/helmpack/tiller:${VERSION}" # Canary version is used with helm init --canary-image flag. # Does not push canary binary which is Helm v3. if [ "$VERSION" != "canary" ]; then echo "Installing Azure CLI" apt update apt install -y apt-transport-https echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ stretch main" | tee /etc/apt/sources.list.d/azure-cli.list curl -L https://packages.microsoft.com/keys/microsoft.asc | apt-key add apt update apt install -y azure-cli echo "Building helm binaries" make build-cross make dist checksum VERSION="${VERSION}" echo "Pushing binaries to gs bucket" ${HOME}/google-cloud-sdk/bin/gsutil cp ./_dist/* "gs://${PROJECT_NAME}" echo "Pushing binaries to Azure" az storage blob upload-batch -s _dist/ -d "$AZURE_STORAGE_CONTAINER_NAME" --pattern 'helm-*' --connection-string "$AZURE_STORAGE_CONNECTION_STRING" echo "Pushing KEYS file to Azure" az storage blob upload -f "KEYS" -n "KEYS" -c "$AZURE_STORAGE_CONTAINER_NAME" --connection-string "$AZURE_STORAGE_CONNECTION_STRING" fi