mirror of
https://github.com/kubernetes-sigs/kind.git
synced 2025-11-30 23:16:04 +07:00
58 lines
2.1 KiB
Bash
Executable File
58 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# Copyright 2020 The Kubernetes 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.
|
|
|
|
# USAGE: cache-wrapper.sh hack/go_container.sh some-go-command
|
|
# $@ will be executed with this script wrapping cache upload / download
|
|
|
|
set -o errexit -o nounset -o pipefail
|
|
|
|
# options for where the cache is stored
|
|
BUCKET="${BUCKET:-bentheelder-kind-ci-builds}"
|
|
BRANCH="${BRANCH:-main}"
|
|
CACHE_SUFFIX="${CACHE_SUFFIX:-"ci-cache/${BRANCH}/gocache.tar"}"
|
|
CACHE_URL="https://storage.googleapis.com/${BUCKET}/${CACHE_SUFFIX}"
|
|
CACHE_GS="gs://${BUCKET}/${CACHE_SUFFIX}"
|
|
|
|
# cd to the repo root
|
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd -P)"
|
|
cd "${REPO_ROOT}"
|
|
|
|
# default to downloading cache
|
|
if [ "${DOWNLOAD_CACHE:-true}" = "true" ]; then
|
|
# NOTE:
|
|
# - We clean the modcache because we won't be able to write to it if it exists
|
|
# https://github.com/golang/go/issues/31481
|
|
# - All of the relevant go system directories are under /go in KIND's build
|
|
# - See below for how the cache tarball is created
|
|
hack/go_container.sh sh -c "go clean -modcache && curl -sSL ${CACHE_URL} | tar -C /go -zxf - --overwrite"
|
|
fi
|
|
|
|
# run the supplied command and store the exit code for later
|
|
set +o errexit
|
|
"$@"
|
|
res=$?
|
|
set -o errexit
|
|
|
|
# default to not uploading cache
|
|
if [ "${UPLOAD_CACHE:-false}" = "true" ]; then
|
|
# We want to cache:
|
|
# - XDG_CACHE_HOME / the go build cache, this is /go/cache in KIND's build
|
|
# - The module cache, ~= $GOPATH/pkg/mod. this /go/pkg/mod in KIND's build
|
|
hack/go_container.sh sh -c 'tar -C /go -czf - ./cache ./pkg/mod' | gsutil cp - "${CACHE_GS}"
|
|
fi
|
|
|
|
# preserve the exit code from our real task
|
|
exit $res
|