feat/compose-build-args-zitadel-readiness-ci-auth #341
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/compose-build-args-zitadel-readiness-ci-auth"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
build.args support (harmony_app): - Parse `build.args` (advanced build form) into ComposeService.build_args, mirroring parse_env (Simple/List/KvPair). - build_images() forwards them as `docker build --build-arg K=V`, so an app can bake per-environment build-time config (e.g. Quarkus profile, a Vite API URL). Zitadel readiness (harmony): - ZitadelSetupScore failed at 0.0s on a cold cluster ("no Running pod for service 'zitadel'") because it checked once, before the Zitadel Deployment pod was Running. Poll for a Running pod (300s/3s) so a one-shot `ship` converges instead of needing a re-run.ZitadelJwtBearer posted Zitadel's access_token to OpenBao's jwt/login. Zitadel issues opaque access tokens by default, so OpenBao rejected it with "compact JWS format must have three parts". The token endpoint already returns an id_token (a JWT) because build_scope requests `openid`; use it. It carries the service user in `sub` and the project id in `aud` (the latter via the project🆔aud scope) — exactly what the OpenBao JWT role binds on. No Zitadel-side change needed (the manual id_token exchange already proved this works).A namespace-scoped deployer (e.g. a tenant CI service account) cannot list pods cluster-wide, so the cert-manager and CNPG operator readiness checks 403'd and failed the whole deploy — pushing operators to grant the tenant cluster-admin, which is a security anti-pattern. Both checks now treat a 403 Forbidden as "this cluster-wide platform operator is managed out-of-band": log a clean info ("Skipped … due to restricted access") and continue, assuming the operator is present. Non-403 errors still propagate.