56 lines
2.0 KiB
Bash
Executable File
56 lines
2.0 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 INGESTION_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 INGESTION_IMAGE PUBLIC_HOST TRAEFIK_NETWORK
|
|
REGION TEAM_ID WEB_REPLICAS WEB_PLACEMENT_CONSTRAINT TRAEFIK_ENTRYPOINTS TRAEFIK_TLS TRAEFIK_CERTRESOLVER 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
|
|
POSTGRES_DB POSTGRES_USER POSTGRES_PASSWORD INGESTION_ADMIN_USERNAME INGESTION_ADMIN_PASSWORD
|
|
YANDEX_MARKET_DASHCAM_CATEGORY_URL MVIDEO_DASHCAM_CATEGORY_URL INGESTION_CATEGORY_DAILY_BUDGET
|
|
INGESTION_PRODUCT_DAILY_BUDGET INGESTION_SITEMAP_DAILY_BUDGET INGESTION_FETCH_DELAY_MIN_MS
|
|
INGESTION_FETCH_DELAY_MAX_MS INGESTION_WORKER_BATCH_SIZE INGESTION_WORKER_IDLE_MS INGESTION_WORKER_REPLICAS
|
|
TRAEFIK_ADMIN_PRIORITY
|
|
)
|
|
|
|
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"
|