mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
Update sync-env-from-server-jenkins.sh
This commit is contained in:
@@ -12,24 +12,23 @@
|
|||||||
# Server layout (one file per service):
|
# Server layout (one file per service):
|
||||||
# /home/user/environmen/<project>/<branch-slug>/freight-api.env
|
# /home/user/environmen/<project>/<branch-slug>/freight-api.env
|
||||||
# /home/user/environmen/<project>/<branch-slug>/freight-portal.env
|
# /home/user/environmen/<project>/<branch-slug>/freight-portal.env
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
DEPLOY_USER="${DEPLOY_USER:-tria}"
|
DEPLOY_USER="${DEPLOY_USER:-tria}"
|
||||||
BRANCH="${BRANCH:?BRANCH is required}"
|
BRANCH="${BRANCH:?BRANCH is required}"
|
||||||
BRANCH_SLUG="${BRANCH_SLUG:-$(echo "${BRANCH}" | tr "[:upper:]" "[:lower:]" | sed -E "s/[^a-z0-9]+/-/g; s/^-+//; s/-+$//")}"
|
BRANCH_SLUG="${BRANCH_SLUG:-$(echo "${BRANCH}" | tr "[:upper:]" "[:lower:]" | sed -E "s/[^a-z0-9]+/-/g; s/^-+//; s/-+$//")}"
|
||||||
ENV_ROOT="${ENV_ROOT:-/home/${DEPLOY_USER}/environment/edr/${BRANCH_SLUG}/${PROJECT:?PROJECT is required}}"
|
ENV_ROOT="${ENV_ROOT:-/home/${DEPLOY_USER}/environment/edr/${BRANCH_SLUG}/${PROJECT:?PROJECT is required}}"
|
||||||
CI_ENV_FILE="${CI_ENV_FILE:?CI_ENV_FILE is required (e.g. \${WORKSPACE}/.ci-env/<service>.env)}"
|
CI_ENV_FILE="${CI_ENV_FILE:?CI_ENV_FILE is required (e.g. \${WORKSPACE}/.ci-env/<service>.env)}"
|
||||||
|
|
||||||
if [[ ! -d "${ENV_ROOT}" ]]; then
|
if [[ ! -d "${ENV_ROOT}" ]]; then
|
||||||
echo "Environment directory not found: ${ENV_ROOT}" >&2
|
echo "Environment directory not found: ${ENV_ROOT}" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "Using environment directory: ${ENV_ROOT}"
|
echo "Using environment directory: ${ENV_ROOT}"
|
||||||
|
|
||||||
mkdir -p "$(dirname "${CI_ENV_FILE}")"
|
mkdir -p "$(dirname "${CI_ENV_FILE}")"
|
||||||
|
if [[ -d "${CI_ENV_FILE}" ]]; then
|
||||||
|
echo "Removing stale directory at ${CI_ENV_FILE}" >&2
|
||||||
|
rm -rf "${CI_ENV_FILE}"
|
||||||
|
fi
|
||||||
: > "${CI_ENV_FILE}"
|
: > "${CI_ENV_FILE}"
|
||||||
|
|
||||||
declare -A SERVICE_ENV_TARGET=(
|
declare -A SERVICE_ENV_TARGET=(
|
||||||
["freight-api"]="apps/edr-freight-api/.env"
|
["freight-api"]="apps/edr-freight-api/.env"
|
||||||
["freight-portal"]="apps/edr-freight-web/portal/.env"
|
["freight-portal"]="apps/edr-freight-web/portal/.env"
|
||||||
@@ -39,35 +38,28 @@ declare -A SERVICE_ENV_TARGET=(
|
|||||||
["passenger-backoffice"]="apps/edr-passenger-web/backoffice/.env"
|
["passenger-backoffice"]="apps/edr-passenger-web/backoffice/.env"
|
||||||
["payment-api"]="apps/edr-payment-api/.env"
|
["payment-api"]="apps/edr-payment-api/.env"
|
||||||
)
|
)
|
||||||
|
|
||||||
for service in "$@"; do
|
for service in "$@"; do
|
||||||
src="${ENV_ROOT}/${service}.env"
|
src="${ENV_ROOT}/${service}.env"
|
||||||
dest="${SERVICE_ENV_TARGET[${service}]:-}"
|
dest="${SERVICE_ENV_TARGET[${service}]:-}"
|
||||||
|
|
||||||
if [[ -z "${dest}" ]]; then
|
if [[ -z "${dest}" ]]; then
|
||||||
echo "Unknown service: ${service}" >&2
|
echo "Unknown service: ${service}" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! -f "${src}" ]]; then
|
if [[ ! -f "${src}" ]]; then
|
||||||
echo "Missing env file: ${src}" >&2
|
echo "Missing env file: ${src}" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p "$(dirname "${dest}")"
|
mkdir -p "$(dirname "${dest}")"
|
||||||
cp "${src}" "${dest}"
|
cp "${src}" "${dest}"
|
||||||
echo "Synced ${src} -> ${dest}"
|
echo "Synced ${src} -> ${dest}"
|
||||||
|
|
||||||
port_value=$(sed -n -E 's/^[[:space:]]*PORT[[:space:]]*=[[:space:]]*"?([^"#]+)"?[[:space:]]*(#.*)?$/\1/p' "${src}" | head -n1 | tr -d '[:space:]')
|
port_value=$(sed -n -E 's/^[[:space:]]*PORT[[:space:]]*=[[:space:]]*"?([^"#]+)"?[[:space:]]*(#.*)?$/\1/p' "${src}" | head -n1 | tr -d '[:space:]')
|
||||||
if [[ -z "${port_value}" ]]; then
|
if [[ -z "${port_value}" ]]; then
|
||||||
echo "Missing required PORT in env file: ${src}" >&2
|
echo "Missing required PORT in env file: ${src}" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
service_var=$(echo "${service}" | tr '[:lower:]-' '[:upper:]_')
|
service_var=$(echo "${service}" | tr '[:lower:]-' '[:upper:]_')
|
||||||
echo "${service_var}_PORT=${port_value}" >> "${CI_ENV_FILE}"
|
echo "${service_var}_PORT=${port_value}" >> "${CI_ENV_FILE}"
|
||||||
echo "Exported ${service_var}_PORT from ${src}"
|
echo "Exported ${service_var}_PORT from ${src}"
|
||||||
|
|
||||||
# Forward NEXT_PUBLIC_* and VITE_* vars so docker compose build can inject them as build args.
|
# Forward NEXT_PUBLIC_* and VITE_* vars so docker compose build can inject them as build args.
|
||||||
grep -E '^[[:space:]]*(NEXT_PUBLIC_|VITE_)[A-Za-z0-9_]+=' "${src}" \
|
grep -E '^[[:space:]]*(NEXT_PUBLIC_|VITE_)[A-Za-z0-9_]+=' "${src}" \
|
||||||
| sed -E 's/^[[:space:]]*//' >> "${CI_ENV_FILE}" || true
|
| sed -E 's/^[[:space:]]*//' >> "${CI_ENV_FILE}" || true
|
||||||
|
|||||||
Reference in New Issue
Block a user