#!/bin/bash set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Configuration GITEA_HOST="192.168.1.208:3002" IMAGE_NAME="socktop-webterm" CARGO_TOML="Cargo.toml" echo -e "${GREEN}=== Socktop WebTerm - Gitea Docker Registry Publisher ===${NC}" echo "" # Extract version from Cargo.toml if [ ! -f "$CARGO_TOML" ]; then echo -e "${RED}Error: Cargo.toml not found!${NC}" exit 1 fi VERSION=$(grep '^version = ' "$CARGO_TOML" | head -1 | sed 's/version = "\(.*\)"/\1/') if [ -z "$VERSION" ]; then echo -e "${RED}Error: Could not extract version from Cargo.toml${NC}" exit 1 fi echo -e "${YELLOW}Version detected:${NC} $VERSION" echo -e "${YELLOW}Gitea Host:${NC} $GITEA_HOST" echo "" # Prompt for Gitea username read -p "Enter Gitea username: " GITEA_USER if [ -z "$GITEA_USER" ]; then echo -e "${RED}Error: Username cannot be empty${NC}" exit 1 fi # Prompt for Gitea password (hidden input) read -s -p "Enter Gitea password: " GITEA_PASSWORD echo "" if [ -z "$GITEA_PASSWORD" ]; then echo -e "${RED}Error: Password cannot be empty${NC}" exit 1 fi echo "" # Docker login to Gitea registry echo -e "${YELLOW}Logging in to Gitea Docker registry...${NC}" echo "$GITEA_PASSWORD" | docker login "$GITEA_HOST" -u "$GITEA_USER" --password-stdin if [ $? -ne 0 ]; then echo -e "${RED}Error: Docker login failed${NC}" exit 1 fi echo -e "${GREEN}✓ Login successful${NC}" echo "" # Build the Docker image echo -e "${YELLOW}Building Docker image...${NC}" docker build -t "${IMAGE_NAME}:${VERSION}" -t "${IMAGE_NAME}:latest" . if [ $? -ne 0 ]; then echo -e "${RED}Error: Docker build failed${NC}" exit 1 fi echo -e "${GREEN}✓ Build successful${NC}" echo "" # Tag images for Gitea registry echo -e "${YELLOW}Tagging images for Gitea registry...${NC}" docker tag "${IMAGE_NAME}:${VERSION}" "${GITEA_HOST}/${GITEA_USER}/${IMAGE_NAME}:${VERSION}" docker tag "${IMAGE_NAME}:latest" "${GITEA_HOST}/${GITEA_USER}/${IMAGE_NAME}:latest" echo -e "${GREEN}✓ Tagged: ${GITEA_HOST}/${GITEA_USER}/${IMAGE_NAME}:${VERSION}${NC}" echo -e "${GREEN}✓ Tagged: ${GITEA_HOST}/${GITEA_USER}/${IMAGE_NAME}:latest${NC}" echo "" # Push version tag echo -e "${YELLOW}Pushing version ${VERSION} to registry...${NC}" docker push "${GITEA_HOST}/${GITEA_USER}/${IMAGE_NAME}:${VERSION}" if [ $? -ne 0 ]; then echo -e "${RED}Error: Failed to push version tag${NC}" exit 1 fi echo -e "${GREEN}✓ Pushed version ${VERSION}${NC}" echo "" # Push latest tag echo -e "${YELLOW}Pushing 'latest' tag to registry...${NC}" docker push "${GITEA_HOST}/${GITEA_USER}/${IMAGE_NAME}:latest" if [ $? -ne 0 ]; then echo -e "${RED}Error: Failed to push latest tag${NC}" exit 1 fi echo -e "${GREEN}✓ Pushed 'latest' tag${NC}" echo "" # Summary echo -e "${GREEN}=== Publication Complete ===${NC}" echo "" echo "Images published to Gitea registry:" echo -e " ${GREEN}${GITEA_HOST}/${GITEA_USER}/${IMAGE_NAME}:${VERSION}${NC}" echo -e " ${GREEN}${GITEA_HOST}/${GITEA_USER}/${IMAGE_NAME}:latest${NC}" echo "" echo "To pull on your k3s cluster or CasaOS:" echo -e " ${YELLOW}docker pull ${GITEA_HOST}/${GITEA_USER}/${IMAGE_NAME}:${VERSION}${NC}" echo -e " ${YELLOW}docker pull ${GITEA_HOST}/${GITEA_USER}/${IMAGE_NAME}:latest${NC}" echo "" echo "For Kubernetes, use image:" echo -e " ${YELLOW}image: ${GITEA_HOST}/${GITEA_USER}/${IMAGE_NAME}:${VERSION}${NC}" echo "" # Logout echo -e "${YELLOW}Logging out from Gitea registry...${NC}" docker logout "$GITEA_HOST" echo -e "${GREEN}✓ Logged out${NC}" echo "" echo -e "${GREEN}Done!${NC}"