socktop-webterm/publish-to-gitea.sh
jasonwitty 6e48c095ab Initial commit: Socktop WebTerm with k3s deployment
- Multi-architecture Docker image (ARM64 + AMD64)
- Kubernetes manifests for 3-replica deployment
- Traefik ingress configuration
- NGINX Proxy Manager integration
- ConfigMap-based configuration
- Automated build and deployment scripts
- Session monitoring tools
2025-11-28 01:31:33 -08:00

132 lines
3.5 KiB
Bash
Executable File

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