#!/usr/bin/env bash # Builds the backend and frontend images and pushes them to the Gitea # container registry at git.devils.zone. Requires `docker login # git.devils.zone` to already be done (run that yourself, out of band, so # the token never ends up in a Claude transcript). # # Usage: scripts/build-and-push.sh [tag] # tag Extra tag to push alongside the git short SHA and `latest`. # Useful for a release, e.g. scripts/build-and-push.sh v0.1.0 set -euo pipefail REGISTRY="git.devils.zone" OWNER="devil" SHA=$(git rev-parse --short HEAD) EXTRA_TAG="${1:-}" BACKEND_IMAGE="${REGISTRY}/${OWNER}/youtube-studio-flow-backend" FRONTEND_IMAGE="${REGISTRY}/${OWNER}/youtube-studio-flow-frontend" echo "==> Building backend (${BACKEND_IMAGE}:${SHA})" docker build -t "${BACKEND_IMAGE}:${SHA}" -t "${BACKEND_IMAGE}:latest" ./backend echo "==> Building frontend (${FRONTEND_IMAGE}:${SHA})" docker build -t "${FRONTEND_IMAGE}:${SHA}" -t "${FRONTEND_IMAGE}:latest" ./frontend if [ -n "$EXTRA_TAG" ]; then docker tag "${BACKEND_IMAGE}:${SHA}" "${BACKEND_IMAGE}:${EXTRA_TAG}" docker tag "${FRONTEND_IMAGE}:${SHA}" "${FRONTEND_IMAGE}:${EXTRA_TAG}" fi echo "==> Pushing backend" docker push "${BACKEND_IMAGE}:${SHA}" docker push "${BACKEND_IMAGE}:latest" [ -n "$EXTRA_TAG" ] && docker push "${BACKEND_IMAGE}:${EXTRA_TAG}" echo "==> Pushing frontend" docker push "${FRONTEND_IMAGE}:${SHA}" docker push "${FRONTEND_IMAGE}:latest" [ -n "$EXTRA_TAG" ] && docker push "${FRONTEND_IMAGE}:${EXTRA_TAG}" echo "==> Done. Pushed tags: ${SHA}, latest${EXTRA_TAG:+, $EXTRA_TAG}" echo " On the server: docker compose pull && docker compose run --rm migrate && docker compose up -d"