Files
enerport-web-app/docker/push.sh
Murat Özkorkmaz 4c4589de6d
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m10s
CI Test
2025-10-17 22:33:30 +02:00

120 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
# ==============================================
# Docker Push Script für Gitea Registry
# ==============================================
# Dieses Script liest Registry-Daten aus der
# .env Datei und pusht das Image zur Registry
# ==============================================
set -e # Exit on error
# Farben für Output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Script-Verzeichnis ermitteln
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ENV_FILE="${SCRIPT_DIR}/.env"
echo -e "${GREEN}=== Docker Push Script für Gitea Registry ===${NC}"
echo ""
# Prüfen ob .env Datei existiert
if [ ! -f "$ENV_FILE" ]; then
echo -e "${RED}ERROR: .env file not found at ${ENV_FILE}${NC}"
exit 1
fi
# .env Datei laden
echo -e "${YELLOW}Loading environment variables from .env...${NC}"
set -a # Automatisch alle Variablen exportieren
source "$ENV_FILE"
set +a
# Validierung der erforderlichen Variablen
if [ -z "$REGISTRY_URL" ]; then
echo -e "${RED}ERROR: REGISTRY_URL not set in .env${NC}"
exit 1
fi
if [ -z "$NAMESPACE" ]; then
echo -e "${RED}ERROR: NAMESPACE not set in .env${NC}"
exit 1
fi
if [ -z "$REPO_NAME" ]; then
echo -e "${RED}ERROR: REPO_NAME not set in .env${NC}"
exit 1
fi
if [ -z "$CI_GITEA_USER" ]; then
echo -e "${RED}ERROR: CI_GITEA_USER not set in .env${NC}"
exit 1
fi
if [ -z "$CI_GITEA_TOKEN" ]; then
echo -e "${RED}ERROR: CI_GITEA_TOKEN not set in .env${NC}"
exit 1
fi
# Image Name und Tag zusammensetzen
IMAGE_TAG="${IMAGE_TAG:-latest}"
FULL_IMAGE_NAME="${REGISTRY_URL}/${NAMESPACE}/${REPO_NAME}:${IMAGE_TAG}"
echo -e "${BLUE}Registry:${NC} ${REGISTRY_URL}"
echo -e "${BLUE}Image:${NC} ${FULL_IMAGE_NAME}"
echo -e "${BLUE}User:${NC} ${CI_GITEA_USER}"
echo ""
# Prüfen ob das Image lokal existiert
echo -e "${YELLOW}Checking if image exists locally...${NC}"
if ! docker image inspect "$FULL_IMAGE_NAME" > /dev/null 2>&1; then
echo -e "${RED}ERROR: Image ${FULL_IMAGE_NAME} not found locally${NC}"
echo -e "${YELLOW}Please build the image first using ./build.sh${NC}"
exit 1
fi
echo -e "${GREEN}✓ Image found locally${NC}"
echo ""
# Login zur Gitea Registry
echo -e "${YELLOW}Logging in to Gitea Registry...${NC}"
echo "$CI_GITEA_TOKEN" | docker login "$REGISTRY_URL" -u "$CI_GITEA_USER" --password-stdin
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ Successfully logged in to ${REGISTRY_URL}${NC}"
else
echo -e "${RED}ERROR: Failed to login to registry${NC}"
exit 1
fi
echo ""
# Image pushen
echo -e "${YELLOW}Pushing image to registry...${NC}"
docker push "$FULL_IMAGE_NAME"
if [ $? -eq 0 ]; then
echo ""
echo -e "${GREEN}✓ Successfully pushed image!${NC}"
echo ""
echo -e "${GREEN}Image available at:${NC}"
echo -e " ${FULL_IMAGE_NAME}"
echo ""
# Pull-Befehl anzeigen
echo -e "${BLUE}To pull this image:${NC}"
echo -e " docker pull ${FULL_IMAGE_NAME}"
echo ""
else
echo -e "${RED}ERROR: Failed to push image${NC}"
exit 1
fi
# Logout
echo -e "${YELLOW}Logging out from registry...${NC}"
docker logout "$REGISTRY_URL" > /dev/null 2>&1
echo -e "${GREEN}✓ Logged out${NC}"