60 lines
1.5 KiB
Bash
Executable File
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"
|