#!/usr/bin/env bash # Load SMOKE_ADMIN_* (fallback ADMIN_SUPER_*) from stand .env via SSH into GITHUB_ENV. # Usage: load-stand-smoke-env.sh set -euo pipefail STAND="${1:?stand: ift|stage}" case "${STAND}" in ift) SSH_HOST="${SSH_HOST:?IFT_SSH_HOST required}" SSH_USER="${SSH_USER:?IFT_SSH_USER required}" SSH_KEY="${SSH_KEY:?IFT_SSH_PRIVATE_KEY required}" ENV_FILE="/opt/eventhub-ift/.env" ;; stage) SSH_HOST="${SSH_HOST:?STAGE_SSH_HOST required}" SSH_USER="${SSH_USER:?STAGE_SSH_USER required}" SSH_KEY="${SSH_KEY:?STAGE_SSH_PRIVATE_KEY required}" ENV_FILE="/opt/eventhub-stage/.env" ;; *) echo "Unknown stand: ${STAND}" exit 1 ;; esac KEY="$(mktemp)" printf '%s\n' "${SSH_KEY}" > "${KEY}" chmod 600 "${KEY}" REMOTE="$(ssh -i "${KEY}" -o BatchMode=yes -o StrictHostKeyChecking=accept-new \ "${SSH_USER}@${SSH_HOST}" \ "grep -E '^(SMOKE_ADMIN_EMAIL|SMOKE_ADMIN_PASSWORD|ADMIN_SUPER_EMAIL|ADMIN_SUPER_PASSWORD)=' ${ENV_FILE} || true")" rm -f "${KEY}" EMAIL="$(printf '%s\n' "${REMOTE}" | sed -n 's/^SMOKE_ADMIN_EMAIL=//p' | head -1)" PASS="$(printf '%s\n' "${REMOTE}" | sed -n 's/^SMOKE_ADMIN_PASSWORD=//p' | head -1)" if [[ -z "${EMAIL}" ]]; then EMAIL="$(printf '%s\n' "${REMOTE}" | sed -n 's/^ADMIN_SUPER_EMAIL=//p' | head -1)" fi if [[ -z "${PASS}" ]]; then PASS="$(printf '%s\n' "${REMOTE}" | sed -n 's/^ADMIN_SUPER_PASSWORD=//p' | head -1)" fi if [[ -z "${EMAIL}" || -z "${PASS}" ]]; then echo "::error::В ${ENV_FILE} нет SMOKE_ADMIN_* / ADMIN_SUPER_*" exit 1 fi if [[ -n "${GITHUB_ENV:-}" ]]; then echo "SMOKE_ADMIN_EMAIL=${EMAIL}" >> "${GITHUB_ENV}" echo "SMOKE_ADMIN_PASSWORD=${PASS}" >> "${GITHUB_ENV}" fi echo "Loaded smoke admin email: ${EMAIL}"