Files
kvitt/infra/dev/build.sh
T
jacobh2 c885aba313 M2c-dev: development compose stack, backup job, Firebase setup docs
infra/dev: compose stack on the Mac (server kvitt-server:dev, on-demand backup),
.env.example, build/up/logs/backup/copy-google-services scripts. No Caddy, no TLS
(debug builds accept http to private LAN addresses, AC-2.8). Bind-mounted data.
infra/backup: alpine 3.24.2 image and backup.sh (SPEC 10.9; Drive upload skipped
when RCLONE_FOLDER_ID is empty). infra/README.md for the dev stack and Firebase.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 21:18:36 +02:00

43 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Builds the development images on this Mac (native linux/arm64, nothing pushed):
# kvitt-server:dev from server/Dockerfile (milestone M2a)
# kvitt-backup:dev from infra/backup/Dockerfile
# Usage: infra/dev/build.sh [server|backup|all] (default: all)
# Refuses to run while a Gradle build holds the gradle-serial lock (CLAUDE.md: never build images during a Gradle build).
set -euo pipefail
# shellcheck source=lib.sh
. "$(dirname "$0")/lib.sh"
what="${1:-all}"
lock=/tmp/kvitt-gradle.lock
if [[ -d "$lock" ]] && pid="$(cat "$lock/pid" 2>/dev/null)" && [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null; then
echo "build.sh: a Gradle build is running (pid $pid, $lock); try again when it is done." >&2
exit 1
fi
server_image="$(env_value KVITT_SERVER_IMAGE)"; server_image="${server_image:-kvitt-server:dev}"
backup_image="$(env_value KVITT_BACKUP_IMAGE)"; backup_image="${backup_image:-kvitt-backup:dev}"
build_server() {
local dockerfile="$repo_root/server/Dockerfile"
local context="${KVITT_SERVER_BUILD_CONTEXT:-$repo_root/server}"
if [[ ! -f "$dockerfile" ]]; then
echo "build.sh: $dockerfile does not exist yet (it comes with milestone M2a)." >&2
return 1
fi
echo "Building $server_image from server/Dockerfile"
docker build --platform linux/arm64 -f "$dockerfile" -t "$server_image" "$context"
}
build_backup() {
echo "Building $backup_image from infra/backup/Dockerfile"
docker build --platform linux/arm64 -f "$repo_root/infra/backup/Dockerfile" -t "$backup_image" "$repo_root/infra/backup"
}
case "$what" in
server) build_server ;;
backup) build_backup ;;
all) build_backup; build_server ;;
*) echo "usage: $0 [server|backup|all]" >&2; exit 2 ;;
esac