blob: 2addf095cc31f9b9bbbaf70c4fa94dd148ccd674 [file] [log] [blame]
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
:<<'DOC'
set NO_CACHE=1 to always rebuild images.
DOC
set -o errexit -o nounset -o pipefail
TAG=test
HERE="$(cd "$(dirname "$0")"; pwd -P)"
ROOT="$(cd "$HERE/../.."; pwd -P)"
function bazel_file {
# bazel_file VAR_NAME //some/build:target
# this will set VAR_NAME to the path of the build artefact
local var="${1:?}"
local ref="${2:?}"
local path="$(bazel info bazel-genfiles)/$(echo "${ref##//}" | tr ':' '/')"
bazel build "$ref"
eval "$var=$path"
}
function kind_images {
# list all images in the kind registry
docker exec -it kind-control-plane crictl images
}
function install_helm3 {
pushd /tmp
curl --location https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz --output helm.tar.gz
tar --extract --file=helm.tar.gz --strip-components=1 linux-amd64/helm
mv helm ~/.local/bin/
popd
}
function action {
(
tput setaf 4;
echo "[$(date --rfc-3339=seconds)] $*";
tput sgr0
) > /dev/stderr
}
function create_cluster {
# trap "kind delete cluster" EXIT
if [ -z "$(kind get clusters)" ]; then
action "Creating kind cluster"
kind create cluster --config="$0.kind.yaml"
fi
}
function get_image {
# cannot use `bazel_file heron_archive //scripts/images:heron.tar` as not distro image
local tag="$TAG"
local distro="${1:?}"
local out
local expected="$ROOT/dist/heron-docker-$tag-$distro.tar"
if [ -f "$expected" ] && [ -z "${NO_CACHE-}" ]; then
action "Using pre-existing heron image"
out="$expected"
else
action "Creating heron image"
local gz="$(scripts/release/docker-images build test debian11)"
# XXX: must un .gz https://github.com/kubernetes-sigs/kind/issues/1636
gzip --decompress "$gz"
out="${gz%%.gz}"
fi
archive="$out"
}
create_cluster
get_image debian11
heron_archive="$archive"
action "Loading heron docker image"
kind load image-archive "$heron_archive"
#image_heron="docker.io/bazel/scripts/images:heron"
#image_heron="$heron_image"
image_heron="apache/heron:$TAG"
action "Loading bookkeeper image"
image_bookkeeper="docker.io/apache/bookkeeper:4.14.5"
docker pull "$image_bookkeeper"
kind load docker-image "$image_bookkeeper"
action "Deploying heron with helm"
# install heron in kind using helm
bazel_file helm_yaml //scripts/packages:index.yaml
helm install heron "$(dirname "$helm_yaml")/heron-0.0.0.tgz" \
--set image="$image_heron" \
--set imagePullPolicy=IfNotPresent \
--set bookieReplicas=1 \
--set zkReplicas=1