ci(deploy): deploy images over ssh from gitea actions

This commit is contained in:
2026-07-07 15:02:02 +08:00
parent 9cb9534459
commit e699ff13b3
8 changed files with 290 additions and 62 deletions
+53
View File
@@ -0,0 +1,53 @@
#!/usr/bin/env bash
set -euo pipefail
IMAGE="${1:-}"
ENV_FILE="${2:-}"
HOST_PORT="${3:-}"
CONTAINER_NAME="${4:-}"
PROJECT_NAME="${5:-}"
if [ -z "$IMAGE" ] || [ -z "$ENV_FILE" ] || [ -z "$HOST_PORT" ] || [ -z "$CONTAINER_NAME" ] || [ -z "$PROJECT_NAME" ]; then
echo "Usage: $0 <image> <env-file> <host-port> <container-name> <compose-project-name>" >&2
exit 64
fi
if [ ! -f "docker-compose.yml" ]; then
echo "Missing docker-compose.yml in $(pwd)" >&2
exit 66
fi
if [ ! -f "$ENV_FILE" ]; then
echo "Missing env file: $ENV_FILE" >&2
exit 66
fi
if docker compose version >/dev/null 2>&1; then
COMPOSE=(docker compose)
elif command -v docker-compose >/dev/null 2>&1; then
COMPOSE=(docker-compose)
else
echo "docker compose command not found" >&2
exit 127
fi
export COZSWEET_IMAGE="$IMAGE"
export COZSWEET_ENV_FILE="$ENV_FILE"
export COZSWEET_HOST_PORT="$HOST_PORT"
export COZSWEET_CONTAINER_NAME="$CONTAINER_NAME"
export COMPOSE_PROJECT_NAME="$PROJECT_NAME"
echo "=== deploy image: $COZSWEET_IMAGE ==="
echo "=== env file: $COZSWEET_ENV_FILE ==="
echo "=== host port: $COZSWEET_HOST_PORT ==="
echo "=== container: $COZSWEET_CONTAINER_NAME ==="
echo "=== compose project: $COMPOSE_PROJECT_NAME ==="
"${COMPOSE[@]}" pull web
"${COMPOSE[@]}" up -d --remove-orphans --no-build web
"${COMPOSE[@]}" ps
docker image prune -f
echo "=== deploy done ==="