Files
dickloads/build-push.sh

35 lines
1012 B
Bash
Executable File

#!/usr/bin/env bash
# build-push.sh — build humor-units image and import it into containerd on each node
# Usage: ./build-push.sh [tag]
# Requires: buildah, ssh access to nodes, ctr on nodes
set -euo pipefail
TAG="${1:-latest}"
IMAGE="humor-units:$TAG"
ARCHIVE="/tmp/humor-units.tar"
# Space-separated list of node SSH targets
NODES="${NODES:-node1 node2}"
echo "==> Building $IMAGE..."
buildah build \
--format docker \
--tag "$IMAGE" \
"$(dirname "$0")"
echo "==> Exporting to OCI archive $ARCHIVE..."
buildah push "$IMAGE" "oci-archive:${ARCHIVE}:${IMAGE}"
for NODE in $NODES; do
echo "==> Copying to $NODE..."
scp "$ARCHIVE" "$NODE:/tmp/humor-units.tar"
echo "==> Importing on $NODE..."
ssh "$NODE" "ctr -n k8s.io images import /tmp/humor-units.tar && rm /tmp/humor-units.tar"
done
echo "==> Restarting humor-units deployment..."
kubectl rollout restart deployment/humor-units -n default
echo "==> Done. Waiting for rollout..."
kubectl rollout status deployment/humor-units -n default