fix(deploy): provision tenant API domains
Some checks failed
Architecture Governance / architecture (push) Failing after 6m16s
Some checks failed
Architecture Governance / architecture (push) Failing after 6m16s
Reconcile TLS, exact CORS, and backend proxying before release activation so every storefront uses its derived API host.
This commit is contained in:
30
.github/workflows/deploy.yml
vendored
30
.github/workflows/deploy.yml
vendored
@@ -82,6 +82,36 @@ jobs:
|
||||
printf '%s\n' "$DEPLOY_KNOWN_HOSTS" > ~/.ssh/known_hosts
|
||||
chmod 644 ~/.ssh/known_hosts
|
||||
|
||||
- name: Reconcile tenant API domains
|
||||
env:
|
||||
HOST: ${{ secrets.DEPLOY_HOST }}
|
||||
USER: ${{ secrets.DEPLOY_USER }}
|
||||
STOREFRONT_DOMAINS: ${{ secrets.STOREFRONT_DOMAINS }}
|
||||
CERTBOT_EMAIL: ${{ secrets.CERTBOT_EMAIL }}
|
||||
BACKEND_UPSTREAM: ${{ secrets.BACKEND_UPSTREAM }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
test -n "$HOST" || { echo "secret DEPLOY_HOST is empty" >&2; exit 1; }
|
||||
test -n "$USER" || { echo "secret DEPLOY_USER is empty" >&2; exit 1; }
|
||||
test -n "$STOREFRONT_DOMAINS" || { echo "secret STOREFRONT_DOMAINS is empty" >&2; exit 1; }
|
||||
test -n "$CERTBOT_EMAIL" || { echo "secret CERTBOT_EMAIL is empty" >&2; exit 1; }
|
||||
BACKEND_UPSTREAM="${BACKEND_UPSTREAM:-https://127.0.0.1:445}"
|
||||
[[ "$CERTBOT_EMAIL" =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ ]] || {
|
||||
echo "CERTBOT_EMAIL is invalid" >&2; exit 1;
|
||||
}
|
||||
[[ "$BACKEND_UPSTREAM" =~ ^https?://[A-Za-z0-9.:-]+$ ]] || {
|
||||
echo "BACKEND_UPSTREAM is invalid" >&2; exit 1;
|
||||
}
|
||||
|
||||
SSH="ssh -i ~/.ssh/deploy_key -o BatchMode=yes"
|
||||
for domain in $STOREFRONT_DOMAINS; do
|
||||
[[ "$domain" =~ ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$ ]] || {
|
||||
echo "invalid storefront domain: $domain" >&2; exit 1;
|
||||
}
|
||||
$SSH "$USER@$HOST" sudo /usr/local/sbin/marketplaces-configure-api-domain \
|
||||
--domain "$domain" --email "$CERTBOT_EMAIL" --upstream "$BACKEND_UPSTREAM"
|
||||
done
|
||||
|
||||
- name: Upload release
|
||||
env:
|
||||
HOST: ${{ secrets.DEPLOY_HOST }}
|
||||
|
||||
Reference in New Issue
Block a user