From 6fba526622c04f4a2f55396694082ba6fea248ae Mon Sep 17 00:00:00 2001 From: root Date: Wed, 18 Mar 2026 05:14:02 +0000 Subject: [PATCH] fix dev local env --- docker/docker-compose.remote.yml | 28 +++++++++++++++++++++++++++- scripts/remote-env | 16 ++++++++++++---- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/docker/docker-compose.remote.yml b/docker/docker-compose.remote.yml index 9cb51efe3e..9eaadc81d3 100644 --- a/docker/docker-compose.remote.yml +++ b/docker/docker-compose.remote.yml @@ -15,11 +15,24 @@ services: - '../apps:/app/apps' - '../packages:/app/packages' - 'nextjs-compiler-cache:/app/apps/studio/.next/dev/cache' + - 'root-node-modules:/app/node_modules' + - 'studio-node-modules:/app/apps/studio/node_modules' + - 'api-types-node-modules:/app/packages/api-types/node_modules' + - 'build-icons-node-modules:/app/packages/build-icons/node_modules' + - 'common-node-modules:/app/packages/common/node_modules' + - 'config-node-modules:/app/packages/config/node_modules' + - 'eslint-config-node-modules:/app/packages/eslint-config-supabase/node_modules' + - 'icons-node-modules:/app/packages/icons/node_modules' + - 'pg-meta-node-modules:/app/packages/pg-meta/node_modules' + - 'shared-data-node-modules:/app/packages/shared-data/node_modules' + - 'tsconfig-node-modules:/app/packages/tsconfig/node_modules' + - 'ui-node-modules:/app/packages/ui/node_modules' + - 'ui-patterns-node-modules:/app/packages/ui-patterns/node_modules' environment: VELA_PLATFORM_DEV_MODE: 'true' NEXTAUTH_SECRET: ${NEXTAUTH_SECRET} - NEXTAUTH_URL: 'http://localhost:3000' + NEXTAUTH_URL: ${NEXTAUTH_URL:-http://localhost:3000} # Server-side Keycloak (Next.js API routes call these) VELA_PLATFORM_KEYCLOAK_ISSUER: 'https://${VELA_REMOTE_HOST}/auth/realms/vela' @@ -46,3 +59,16 @@ services: volumes: nextjs-compiler-cache: + root-node-modules: + studio-node-modules: + api-types-node-modules: + build-icons-node-modules: + common-node-modules: + config-node-modules: + eslint-config-node-modules: + icons-node-modules: + pg-meta-node-modules: + shared-data-node-modules: + tsconfig-node-modules: + ui-node-modules: + ui-patterns-node-modules: diff --git a/scripts/remote-env b/scripts/remote-env index b31c236b9f..a7b43e27d8 100755 --- a/scripts/remote-env +++ b/scripts/remote-env @@ -9,7 +9,7 @@ Usage: # Global dev deployment: env $(scripts/remote-env | xargs) podman compose -f docker/docker-compose.remote.yml up --build """ -import argparse, json, secrets, subprocess, sys, urllib.parse, urllib.request +import argparse, json, os, secrets, subprocess, sys, urllib.parse, urllib.request def kc_request(url, token=None, method="GET", data=None): @@ -28,6 +28,8 @@ def main(): parser.add_argument("pr", nargs="?", help="PR number, e.g. 663 (omit for global dev deployment)") parser.add_argument("--realm", default="vela") parser.add_argument("--admin-user", default=None, help="Keycloak admin username (default: read from configmap)") + parser.add_argument("--kubeconfig", default=None, help="Path to kubeconfig file (default: kubectl default)") + parser.add_argument("--public-url", default=os.environ.get("NEXTAUTH_URL", "http://localhost:3000"), help="Public URL of the studio (default: $NEXTAUTH_URL or http://localhost:3000)") args = parser.parse_args() if args.pr: @@ -39,9 +41,13 @@ def main(): kc = f"https://{host}/auth" realm = args.realm + kubectl = ["kubectl"] + if args.kubeconfig: + kubectl += ["--kubeconfig", args.kubeconfig] + print(f"Fetching admin credentials from {ns} ...", file=sys.stderr) cm_data = json.loads(subprocess.check_output( - ["kubectl", "-n", ns, "get", "configmap", "vela-auth-config", + kubectl + ["-n", ns, "get", "configmap", "vela-auth-config", "-o", "jsonpath={.data}"], text=True, )) @@ -67,8 +73,9 @@ def main(): client_uuid = clients[0]["id"] client = kc_request(f"{kc}/admin/realms/{realm}/clients/{client_uuid}", token) - redirect_uri = "http://localhost:3000/*" - web_origin = "http://localhost:3000" + public_url = args.public_url.rstrip("/") + redirect_uri = f"{public_url}/*" + web_origin = public_url if redirect_uri not in client.get("redirectUris", []): client["redirectUris"] = sorted(set(client.get("redirectUris", []) + [redirect_uri])) client["webOrigins"] = sorted(set(client.get("webOrigins", []) + [web_origin])) @@ -92,6 +99,7 @@ def main(): print(f"VELA_REMOTE_HOST={host}") print(f"KEYCLOAK_CLIENT_SECRET={client_secret}") print(f"NEXTAUTH_SECRET={nextauth_secret}") + print(f"NEXTAUTH_URL={public_url}") if __name__ == "__main__":