#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" GITEA_REGISTRY="gitea.onecluster.org" GITEA_USER="mono" usage() { echo "Usage: $0 [commit_sha]" echo "" echo "Examples:" echo " $0 staging # Build and push staging image" echo " $0 production # Build and push production image" echo " $0 staging abc1234 # Build with specific commit SHA" exit 1 } if [ $# -lt 1 ]; then usage fi ENV_TYPE="$1" COMMIT_SHA="${2:-$(git -C "$PROJECT_ROOT" rev-parse --short HEAD 2>/dev/null || echo "unknown")}" case "$ENV_TYPE" in staging) ENV_FILE="$SCRIPT_DIR/.env.staging" IMAGE_NAME="don_confiao_frontend_staging" TAG="latest" ;; production) ENV_FILE="$SCRIPT_DIR/.env.production" IMAGE_NAME="don_confiao_frontend" TAG="latest" ;; *) echo "Error: Invalid environment type '$ENV_TYPE'" usage ;; esac if [ ! -f "$ENV_FILE" ]; then echo "Error: Environment file not found: $ENV_FILE" echo "Please create it based on: $SCRIPT_DIR/.env.example" exit 1 fi echo "=== Building $ENV_TYPE image ===" echo "Image tag: $TAG" echo "Commit SHA: $COMMIT_SHA" echo "Environment file: $ENV_FILE" set -a source "$ENV_FILE" set +a BUILD_ARGS="--build-arg VITE_DJANGO_BASE_URL=$VITE_DJANGO_BASE_URL" BUILD_ARGS="$BUILD_ARGS --build-arg VITE_API_IMPLEMENTATION=$VITE_API_IMPLEMENTATION" FULL_IMAGE_NAME="$GITEA_REGISTRY/$GITEA_USER/$IMAGE_NAME" echo "Building image..." docker build \ $BUILD_ARGS \ -t "$FULL_IMAGE_NAME:$TAG" \ -t "$FULL_IMAGE_NAME:$COMMIT_SHA" \ -f "$SCRIPT_DIR/Dockerfile" \ "$PROJECT_ROOT" echo "" echo "=== Pushing image to registry ===" docker push "$FULL_IMAGE_NAME:$TAG" docker push "$FULL_IMAGE_NAME:$COMMIT_SHA" echo "" echo "=== Done ===" echo "Image: $FULL_IMAGE_NAME:$TAG" echo "Commit: $FULL_IMAGE_NAME:$COMMIT_SHA"