All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m10s
120 lines
3.1 KiB
Bash
Executable File
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}"
|