#!/usr/bin/env bash set -euo pipefail log() { printf '[register-alpine-image] %s\n' "$*" >&2 } resolve_banger_bin() { if [[ -n "${BANGER_BIN:-}" ]]; then printf '%s\n' "$BANGER_BIN" return fi if [[ -x "$REPO_ROOT/build/bin/banger" ]]; then printf '%s\n' "$REPO_ROOT/build/bin/banger" return fi if [[ -x "$REPO_ROOT/banger" ]]; then printf '%s\n' "$REPO_ROOT/banger" return fi if command -v banger >/dev/null 2>&1; then command -v banger return fi log "banger binary not found; build it first with 'make build' or set BANGER_BIN" exit 1 } SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" RUNTIME_DIR="${BANGER_MANUAL_DIR:-$REPO_ROOT/build/manual}" IMAGE_NAME="${ALPINE_IMAGE_NAME:-alpine}" KERNEL_REF="${ALPINE_KERNEL_REF:-$IMAGE_NAME}" BANGER_BIN="$(resolve_banger_bin)" ROOTFS="$RUNTIME_DIR/rootfs-alpine.ext4" WORK_SEED="$RUNTIME_DIR/rootfs-alpine.work-seed.ext4" if [[ ! -f "$ROOTFS" ]]; then log "missing Alpine rootfs: $ROOTFS" exit 1 fi if [[ ! -f "$WORK_SEED" ]]; then log "missing Alpine work-seed: $WORK_SEED" exit 1 fi if [[ ! -d "$RUNTIME_DIR/alpine-kernel" ]]; then log "missing staged Alpine kernel artifacts: $RUNTIME_DIR/alpine-kernel" log "run 'make alpine-kernel' before registering $IMAGE_NAME" exit 1 fi log "importing Alpine kernel from $RUNTIME_DIR/alpine-kernel as $KERNEL_REF" "$BANGER_BIN" kernel import "$KERNEL_REF" \ --from "$RUNTIME_DIR/alpine-kernel" \ --distro alpine \ --arch x86_64 log "registering image $IMAGE_NAME with kernel-ref $KERNEL_REF" "$BANGER_BIN" image register \ --name "$IMAGE_NAME" \ --rootfs "$ROOTFS" \ --work-seed "$WORK_SEED" \ --docker \ --kernel-ref "$KERNEL_REF"