#!/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}"