77 lines
1.6 KiB
Bash
Executable File
77 lines
1.6 KiB
Bash
Executable File
#!/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" $@ .
|
|
|