Files
marketing-parser/scripts/bootstrap_gitlab_deploy.sh

60 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
SOURCE_CONTAINER="${SOURCE_CONTAINER:-konturai-parser-app}"
DEPLOY_DIR="${DEPLOY_DIR:-/home/gitlab-runner/deploy/marketing-parser}"
ENV_KEYS=(
SPRING_DATASOURCE_URL
POSTGRES_USER
POSTGRES_PASSWORD
SPRING_JPA_HIBERNATE_DDL_AUTO
CORS_ALLOWED_ORIGIN
FACEBOOK_LEADS_PAGE_ID
FACEBOOK_LEADS_ACCESS_TOKEN
FACEBOOK_LEADS_CRON
FACEBOOK_LEADS_GRAPH_API_VERSION
FACEBOOK_LEADS_CALL_CENTER_BASE_URL
)
if [[ "${EUID}" -ne 0 ]]; then
echo "Run this script as root so it can write the deploy directory for gitlab-runner." >&2
exit 1
fi
if ! command -v docker >/dev/null 2>&1; then
echo "Docker is required." >&2
exit 1
fi
if ! id gitlab-runner >/dev/null 2>&1; then
echo "gitlab-runner user does not exist." >&2
exit 1
fi
if ! docker inspect "$SOURCE_CONTAINER" >/dev/null 2>&1; then
echo "Source container not found: $SOURCE_CONTAINER" >&2
exit 1
fi
install -d -o gitlab-runner -g gitlab-runner "$DEPLOY_DIR"
TMP_ENV="$(mktemp)"
trap 'rm -f "$TMP_ENV"' EXIT
PATTERN="$(printf '%s|' "${ENV_KEYS[@]}")"
PATTERN="^(${PATTERN%|})="
docker inspect "$SOURCE_CONTAINER" --format '{{range .Config.Env}}{{println .}}{{end}}' \
| grep -E "$PATTERN" > "$TMP_ENV"
if [[ ! -s "$TMP_ENV" ]]; then
echo "Failed to extract deployment environment from $SOURCE_CONTAINER" >&2
exit 1
fi
install -m 600 -o gitlab-runner -g gitlab-runner "$TMP_ENV" "$DEPLOY_DIR/.env.production"
echo "Bootstrap complete: wrote $DEPLOY_DIR/.env.production from $SOURCE_CONTAINER"