Files
videoreg.ru/deploy/scripts/deploy-over-ssh.sh
T
huncode df60a7b74c
Master Production Deploy / production (push) Failing after 7m51s
Init repo
2026-05-16 23:51:49 +03:00

50 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
require_var() {
local name="$1"
if [ -z "${!name:-}" ]; then
printf 'Required environment variable %s is missing\n' "$name" >&2
exit 2
fi
}
quote() {
printf '%q' "$1"
}
require_var SWARM_MANAGER_HOST
require_var SWARM_SSH_USER
require_var ENVIRONMENT
require_var STACK_NAME
require_var RELEASE_ID
require_var COMMIT_SHA
require_var WEB_IMAGE
require_var PUBLIC_HOST
require_var TRAEFIK_NETWORK
SSH_PORT="${SWARM_SSH_PORT:-22}"
SSH_TARGET="${SWARM_SSH_USER}@${SWARM_MANAGER_HOST}"
REMOTE_DEPLOY_DIR="${REMOTE_DEPLOY_DIR:-/tmp/videoreg-deploy}"
ssh -p "$SSH_PORT" "$SSH_TARGET" "mkdir -p $(quote "$REMOTE_DEPLOY_DIR")"
scp -P "$SSH_PORT" deploy/swarm/docker-stack.yml "$SSH_TARGET:$REMOTE_DEPLOY_DIR/docker-stack.yml"
scp -P "$SSH_PORT" deploy/remote/deploy-stack.sh "$SSH_TARGET:$REMOTE_DEPLOY_DIR/deploy-stack.sh"
remote_vars=(
ENVIRONMENT STACK_NAME RELEASE_ID COMMIT_SHA WEB_IMAGE PUBLIC_HOST TRAEFIK_NETWORK
REGION TEAM_ID WEB_REPLICAS WEB_PLACEMENT_CONSTRAINT TRAEFIK_ENTRYPOINTS TRAEFIK_TLS REGISTRY REGISTRY_USERNAME REGISTRY_PASSWORD
RELEASE_LOCK_FILE REMOTE_DEPLOY_DIR DEPLOY_MIN_FREE_MB DEPLOY_PRUNE_BEFORE_PULL DEPLOY_PRUNE_UNTIL
DEPLOY_CLEANUP_FAILED_IMAGES VIDEOREG_DB_MEMORY_TTL_MS VIDEOREG_NEXT_CACHE_REVALIDATE_SECONDS
)
remote_command=""
for name in "${remote_vars[@]}"; do
if [ -n "${!name:-}" ]; then
remote_command+="$name=$(quote "${!name}") "
fi
done
remote_command+="bash $(quote "$REMOTE_DEPLOY_DIR/deploy-stack.sh")"
ssh -p "$SSH_PORT" "$SSH_TARGET" "$remote_command"