#!/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 } require_var ENVIRONMENT require_var STACK_NAME LOCK_FILE="${RELEASE_LOCK_FILE:-/tmp/${STACK_NAME}-${ENVIRONMENT}.lock}" exec 9>"$LOCK_FILE" flock -n 9 || { echo "Another deployment operation is already running for ${STACK_NAME}/${ENVIRONMENT}" >&2 exit 75 } printf '{"event":"rollback_start","environment":"%s","stack":"%s"}\n' "$ENVIRONMENT" "$STACK_NAME" docker service rollback "${STACK_NAME}_web" || true printf '{"event":"rollback_requested","environment":"%s","stack":"%s"}\n' "$ENVIRONMENT" "$STACK_NAME"