dfp_wm2026_simulator/gitea-deploy.sh
pauli 8a110661bb
Some checks failed
Build and Deploy / build-and-push (push) Failing after 31s
Build and Deploy / optional-deploy (push) Has been skipped
add gitea
2026-05-21 00:10:05 +02:00

74 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Gitea / Git deployment runner script for Proxmox LXC container with Docker.
#
# Usage:
# ./gitea-deploy.sh
#
# Optional environment variables:
# REPO_DIR Path to the repository root (default: script directory)
# DEPLOY_BRANCH Git branch to deploy (default: main)
# COMPOSE_FILE Docker Compose file path (default: docker-compose.yml)
# DOCKER_CMD Docker command to use (auto-detected)
# GIT_CLEAN If set to 1, clean untracked files before deploy
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_DIR="${REPO_DIR:-$SCRIPT_DIR}"
DEPLOY_BRANCH="${DEPLOY_BRANCH:-main}"
COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.yml}"
GIT_CLEAN="${GIT_CLEAN:-0}"
if command -v docker >/dev/null 2>&1 && docker compose version >/dev/null 2>&1; then
DOCKER_COMPOSE_CMD="docker compose"
elif command -v docker-compose >/dev/null 2>&1; then
DOCKER_COMPOSE_CMD="docker-compose"
else
echo "ERROR: docker compose command not found. Install Docker Compose or use Docker v20+ with built-in compose."
exit 1
fi
cd "$REPO_DIR"
echo "Deploying $REPO_DIR"
echo "Branch: $DEPLOY_BRANCH"
echo "Compose file: $COMPOSE_FILE"
if ! command -v git >/dev/null 2>&1; then
echo "ERROR: git is not installed."
exit 1
fi
if [ ! -f "$COMPOSE_FILE" ]; then
echo "ERROR: Compose file '$COMPOSE_FILE' not found in $REPO_DIR."
exit 1
fi
# Ensure repository is on the correct branch and in sync with remote.
git fetch --all --prune
git checkout "$DEPLOY_BRANCH"
git reset --hard "origin/$DEPLOY_BRANCH"
if [ "$GIT_CLEAN" = "1" ]; then
echo "Cleaning untracked files..."
git clean -fdx
fi
# Build and deploy with Docker Compose.
echo "Stopping existing containers and removing orphans..."
$DOCKER_COMPOSE_CMD -f "$COMPOSE_FILE" down --remove-orphans
echo "Building image..."
$DOCKER_COMPOSE_CMD -f "$COMPOSE_FILE" build --no-cache
echo "Starting containers..."
$DOCKER_COMPOSE_CMD -f "$COMPOSE_FILE" up -d
echo "Deployment finished. Current service status:"
$DOCKER_COMPOSE_CMD -f "$COMPOSE_FILE" ps
exit 0