Files
cloud-services/scripts/build.sh

37 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# Build and optionally deploy a service
# Usage: ./scripts/build.sh <service> [--deploy] [version]
# Example: ./scripts/build.sh depot --deploy v1
set -e
SERVICE=${1:-gateway}
DEPLOY=${2:-}
VERSION=${3:-v1}
REGISTRY="localhost:32000"
TAG="$VERSION"
echo "Building $SERVICE..."
docker build --platform linux/arm64 \
--build-arg SERVICE=$SERVICE \
-t $REGISTRY/$SERVICE:$TAG \
-f Dockerfile .
if [ "$DEPLOY" == "--deploy" ]; then
echo "Saving image..."
docker save $REGISTRY/$SERVICE:$TAG -o /tmp/$SERVICE.tar
echo "Transferring to cluster..."
scp /tmp/$SERVICE.tar admin@control-plane.local:/tmp/
echo "Importing to microk8s..."
ssh admin@control-plane.local "/usr/local/bin/multipass transfer /tmp/$SERVICE.tar microk8s-vm:/tmp/"
ssh admin@control-plane.local "/usr/local/bin/multipass exec microk8s-vm -- microk8s ctr images rm $REGISTRY/$SERVICE:$TAG 2>/dev/null || true"
ssh admin@control-plane.local "/usr/local/bin/multipass exec microk8s-vm -- microk8s ctr images import /tmp/$SERVICE.tar"
echo "Restarting deployment..."
ssh admin@control-plane.local "/usr/local/bin/multipass exec microk8s-vm -- microk8s kubectl rollout restart deployment/$SERVICE -n cloud-services"
echo "Done!"
fi