#!/usr/bin/env bash set -euo pipefail REG="docker.adamksmith.xyz" cd "$(dirname "$0")" # Stage and commit all changes git add -A if git diff --cached --quiet; then echo "No changes to commit, using HEAD" else git commit -m "${1:-Build and push images}" fi SHA=$(git rev-parse --short HEAD) # Two images from one Dockerfile (shared frontend build stage is cached): # jbod-poller — privileged hardware producer # jbod-web — unprivileged read-only consumer (REST/UI/MQTT) for target in poller web; do img="${REG}/jbod-${target}" echo "Building ${img}:${SHA}" docker build --target "${target}" -t "${img}:${SHA}" -t "${img}:latest" . echo "Pushing ${img}:${SHA}" docker push "${img}:${SHA}" docker push "${img}:latest" done echo "Done: ${REG}/jbod-{poller,web}:${SHA}"