This commit is contained in:
91
docker/build.sh
Executable file
91
docker/build.sh
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user