#!/usr/bin/env bash # Tencent is pleased to support the open source community by making TKEStack # available. # # Copyright (C) 2012-2021 Tencent. 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 # # https://opensource.org/licenses/Apache-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 OF ANY KIND, either express or implied. See the License for the # specific language governing permissions and limitations under the License. set -o errexit set -o nounset set -o pipefail REGISTRY_PREFIX=${REGISTRY_PREFIX:-tkestack} BUILDER=${BUILDER:-default} VERSION=${VERSION:-$(git describe --dirty --always --tags | sed 's/-/./g')} PROVIDER_RES_VERSION=v1.21.4-4 K8S_VERSION=${PROVIDER_RES_VERSION%-*} DOCKER_VERSION=19.03.14 CONTAINERD_VERSION=1.5.4 NERDCTL_VERSION=0.11.0 REGISTRY_VERSION=2.7.1 OSS=(linux) ARCHS=(amd64 arm64) OUTPUT_DIR=_output DST_DIR=$(mktemp -d) echo "${DST_DIR}" || exit INSTALLER_DIR=$(mktemp -d) SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}") function usage() { cat < $OUTPUT_DIR/${installer}" (cd $OUTPUT_DIR && sha256sum "${installer}" > "${installer}.sha256") echo "current builder is ${BUILDER}" if [[ "${BUILDER}" == "tke" ]]; then echo "start upload process" coscmd upload "${INSTALLER_DIR}/$installer" "$installer" coscmd upload "$OUTPUT_DIR/$installer.sha256" "$installer.sha256" fi } function prepare::images() { GENERATE_IMAGES_BIN="$OUTPUT_DIR/$(go env GOOS)/$(go env GOARCH)/generate-images" make build BINS=generate-images VERSION="$VERSION" $GENERATE_IMAGES_BIN $GENERATE_IMAGES_BIN | sed "s;^;${REGISTRY_PREFIX}/;" | xargs -n1 -I{} sh -c "docker --config=${DOCKER_PULL_CONFIG} pull {} || exit 255" $GENERATE_IMAGES_BIN | sed "s;^;${REGISTRY_PREFIX}/;" | xargs docker save | gzip -c >"${DST_DIR}"/images.tar.gz } pwd quick=false while getopts "hq" o; do case "${o}" in h) usage ;; q) quick=true ;; *) usage ;; esac done shift $((OPTIND-1)) if [[ "${quick}" == "false" ]]; then prepare::images fi prepare::baremetal_provider for os in "${OSS[@]}" do for arch in "${ARCHS[@]}" do prepare::tke_installer "${os}" "${arch}" build::installer_image "${arch}" build::installer "${os}" "${arch}" done done rm -rf "${DST_DIR}" rm -rf "${INSTALLER_DIR}"