#!/usr/bin/env bash set -euo pipefail # Farben für Output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Script Directory SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" # Load environment variables from .env if [ -f "${SCRIPT_DIR}/.env" ]; then echo -e "${GREEN}Loading environment variables from .env...${NC}" set -a source "${SCRIPT_DIR}/.env" set +a else echo -e "${RED}Error: .env file not found in ${SCRIPT_DIR}${NC}" exit 1 fi # Variables IMAGE_NAME="${REGISTRY_URL}/${NAMESPACE}/${REPO_NAME}" IMAGE_FULL="${IMAGE_NAME}:${IMAGE_TAG}" echo -e "${GREEN}========================================${NC}" echo -e "${GREEN}Building SKAMP Application${NC}" echo -e "${GREEN}========================================${NC}" echo -e "Project Root: ${PROJECT_ROOT}" echo -e "Image: ${IMAGE_FULL}" echo -e "${GREEN}========================================${NC}" # Change to project root cd "${PROJECT_ROOT}" # Step 1: Clean previous builds (optional) echo -e "\n${YELLOW}Step 1: Cleaning previous builds...${NC}" if command -v mvn &> /dev/null; then mvn clean else echo -e "${YELLOW}Maven not found locally, will use Docker build stage${NC}" fi # Step 2: Build Docker image echo -e "\n${YELLOW}Step 2: Building Docker image...${NC}" docker build \ -f "${SCRIPT_DIR}/Dockerfile" \ -t "${IMAGE_FULL}" \ -t "${IMAGE_NAME}:latest" \ "${PROJECT_ROOT}" # Check if build was successful if [ $? -eq 0 ]; then echo -e "\n${GREEN}========================================${NC}" echo -e "${GREEN}Build successful!${NC}" echo -e "${GREEN}========================================${NC}" echo -e "Image: ${IMAGE_FULL}" echo -e "Also tagged as: ${IMAGE_NAME}:latest" # Show image details echo -e "\n${YELLOW}Image details:${NC}" docker images "${IMAGE_NAME}" | head -n 2 # Optional: Push to registry read -p "Do you want to push the image to the registry? (y/n) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo -e "\n${YELLOW}Logging in to registry...${NC}" echo "${CI_GITEA_TOKEN}" | docker login "${REGISTRY_URL}" -u "${CI_GITEA_USER}" --password-stdin if [ $? -eq 0 ]; then echo -e "${GREEN}Login successful!${NC}" echo -e "\n${YELLOW}Pushing image to registry...${NC}" docker push "${IMAGE_FULL}" docker push "${IMAGE_NAME}:latest" echo -e "${GREEN}Push successful!${NC}" else echo -e "${RED}Login failed! Cannot push images.${NC}" exit 1 fi fi else echo -e "\n${RED}Build failed!${NC}" exit 1 fi echo -e "\n${GREEN}Done!${NC}"