25 lines
713 B
Bash
Executable File
25 lines
713 B
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
|
|
}
|
|
|
|
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"
|