69 lines
2.0 KiB
Bash
Executable File
69 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Compare deployed container versions against local git HEAD
|
|
# Warns if containers are stale (built from an older commit)
|
|
#
|
|
# Usage:
|
|
# ./scripts/build-check.sh
|
|
#
|
|
# What it shows:
|
|
# - Local git HEAD commit SHA
|
|
# - Each container's built commit SHA (from Docker labels)
|
|
# - Whether containers are up-to-date or stale
|
|
# - Warnings if labels are missing (pre-07-02 containers)
|
|
#
|
|
# Label fields read:
|
|
# - org.opencontainers.image.revision = Git commit SHA embedded by deploy.sh
|
|
# - org.opencontainers.image.created = Build timestamp (ISO 8601 format)
|
|
#
|
|
# Exit codes:
|
|
# 0 = All containers up to date
|
|
# 1+ = Warnings or stale containers detected
|
|
#
|
|
# See: /docs/DEPLOYMENT.md for troubleshooting
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
|
cd "$REPO_DIR"
|
|
|
|
LOCAL_COMMIT=$(git rev-parse HEAD)
|
|
echo "Local HEAD: $(git rev-parse --short HEAD) ($LOCAL_COMMIT)"
|
|
echo ""
|
|
|
|
# Check a single container's build status
|
|
# Args: $1 = container name
|
|
check() {
|
|
local name="$1"
|
|
|
|
# Container not running
|
|
if ! docker inspect "$name" &>/dev/null; then
|
|
echo "[$name] Not running"
|
|
return
|
|
fi
|
|
|
|
# Read Docker labels set by deploy.sh
|
|
# If labels are missing, container was built before phase 07-02
|
|
local commit date
|
|
commit=$(docker inspect "$name" --format '{{index .Config.Labels "org.opencontainers.image.revision"}}' 2>/dev/null)
|
|
date=$(docker inspect "$name" --format '{{index .Config.Labels "org.opencontainers.image.created"}}' 2>/dev/null)
|
|
|
|
if [ -z "$commit" ] || [ "$commit" = "unknown" ]; then
|
|
echo "[$name] WARNING: no build label found — redeploy with scripts/deploy.sh to add tracking"
|
|
return
|
|
fi
|
|
|
|
# Display container info
|
|
echo "[$name] Built: ${commit:0:7} on ${date:-unknown}"
|
|
|
|
# Compare container commit to local HEAD
|
|
if [ "$commit" = "$LOCAL_COMMIT" ]; then
|
|
echo "[$name] OK: up to date"
|
|
else
|
|
echo "[$name] STALE: container is behind local code — run scripts/deploy.sh"
|
|
fi
|
|
}
|
|
|
|
# Check both containers
|
|
check "gravl-backend"
|
|
check "gravl-frontend"
|