#!/bin/bash set -eo pipefail hasunset=0 if [ "$UID" != "0" ]; then echo "This script must be run in root." exit 2 fi PATH="$PWD/scripts:$PATH" if [[ "$CLOUD_CONFIG_REPO" -eq "" ]]; then echo "CLOUD_CONFIG_REPO is not set." CLOUD_CONFIG_REPO="https://git.sfclub.cc/cloud/bearnet" hasunset=1 fi if [[ "$CLOUD_CONFIG_REVISION" -eq "" ]]; then echo "CLOUD_CONFIG_REVISION is not set." CLOUD_CONFIG_REVISION="wish" hasunset=1 fi if [[ "$CLOUD_GATEWAY_ADDRESS" -eq "" ]]; then echo "CLOUD_GATEWAY_ADDRESS is not set." CLOUD_GATEWAY_ADDRESS="10.0.0.119" hasunset=1 fi TMP_DIR=$(mktemp -d) if [[ "$hasunset" -ne 0 ]]; then echo "" echo "Default values will be used for unset environments:" echo "" set | grep -E "^CLOUD_" fi cleanup_() { rm -rf $TMP_DIR } trap cleanup_ INT TERM EXIT IMAGE_TAG=$(git rev-parse --short HEAD) IMAGE_NAME=${IMAGE_NAME:-bearcloud} echo "Image tag: $IMAGE_NAME:$IMAGE_TAG and $IMAGE_NAME:latest" echo "Additional arguments: $@" echo "Continue?" read rm -rf "$TMP_DIR" cp -r ./image $TMP_DIR sed -i "s#_REPO_#$CLOUD_CONFIG_REPO#g" $TMP_DIR/overlay/daemon/update-keys.sh && \ sed -i "s#_REVISION_#$CLOUD_CONFIG_REVISION#g" $TMP_DIR/overlay/daemon/update-keys.sh && \ sed -i "s#GATEWAY_ADDRESS#$CLOUD_GATEWAY_ADDRESS#g" $TMP_DIR/overlay/etc/dhcp/dhclient.conf pushd $PWD >/dev/null cd $TMP_DIR export IMAGE_ARTIFACT="$PWD/vm.raw" rm -f vm.raw && ./build-image.sh if [ ! -f $IMAGE_ARTIFACT ]; then exit 2 fi popd > /dev/null mv $IMAGE_ARTIFACT ./data/ IMAGE_ARTIFACT="$PWD/data/vm.raw" docker build -t "$IMAGE_NAME:$IMAGE_TAG" -t "$IMAGE_NAME:latest" $@ .