Add runner-based auto deploy for marketing-parser
This commit is contained in:
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user