#!/usr/bin/env bash # filepath: /home/lukas/Volume/repo/Aniworld/Docker/push.sh # # Build and push Aniworld container images to the Gitea registry. # # Usage: # ./push.sh # builds & pushes with tag "latest" # ./push.sh v1.2.3 # builds & pushes with tag "v1.2.3" # ./push.sh v1.2.3 --no-build # pushes existing images only # # Prerequisites: # podman login git.lpl-mind.de set -euo pipefail # --------------------------------------------------------------------------- # Configuration # --------------------------------------------------------------------------- REGISTRY="git.lpl-mind.de" NAMESPACE="lukas.pupkalipinski" PROJECT="aniworld" APP_IMAGE="${REGISTRY}/${NAMESPACE}/${PROJECT}/app" VPN_IMAGE="${REGISTRY}/${NAMESPACE}/${PROJECT}/vpn" TAG="${1:-latest}" SKIP_BUILD=false if [[ "${2:-}" == "--no-build" ]]; then SKIP_BUILD=true fi SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" # --------------------------------------------------------------------------- # Helpers # --------------------------------------------------------------------------- log() { echo -e "\n>>> $*"; } err() { echo -e "\n❌ ERROR: $*" >&2; exit 1; } # --------------------------------------------------------------------------- # Pre-flight checks # --------------------------------------------------------------------------- echo "============================================" echo " Aniworld — Build & Push" echo " Registry : ${REGISTRY}" echo " Tag : ${TAG}" echo "============================================" command -v podman &>/dev/null || err "podman is not installed." if ! podman login --get-login "${REGISTRY}" &>/dev/null; then err "Not logged in. Run:\n podman login ${REGISTRY}" fi # --------------------------------------------------------------------------- # Build # --------------------------------------------------------------------------- if [[ "${SKIP_BUILD}" == false ]]; then log "Building app image → ${APP_IMAGE}:${TAG}" podman build \ -t "${APP_IMAGE}:${TAG}" \ -f "${SCRIPT_DIR}/Dockerfile.app" \ "${PROJECT_ROOT}" log "Building VPN image → ${VPN_IMAGE}:${TAG}" podman build \ -t "${VPN_IMAGE}:${TAG}" \ -f "${SCRIPT_DIR}/Containerfile" \ "${SCRIPT_DIR}" fi # --------------------------------------------------------------------------- # Push # --------------------------------------------------------------------------- log "Pushing ${APP_IMAGE}:${TAG}" podman push "${APP_IMAGE}:${TAG}" log "Pushing ${VPN_IMAGE}:${TAG}" podman push "${VPN_IMAGE}:${TAG}" # --------------------------------------------------------------------------- # Summary # --------------------------------------------------------------------------- echo "" echo "============================================" echo " ✅ Push complete!" echo "" echo " Images:" echo " ${APP_IMAGE}:${TAG}" echo " ${VPN_IMAGE}:${TAG}" echo "" echo " Deploy on server:" echo " podman login ${REGISTRY}" echo " podman-compose -f podman-compose.prod.yml pull" echo " podman-compose -f podman-compose.prod.yml up -d" echo "============================================"