diff --git a/infra/deploy-runner/nodedc-deploy b/infra/deploy-runner/nodedc-deploy index f23db34..094512e 100755 --- a/infra/deploy-runner/nodedc-deploy +++ b/infra/deploy-runner/nodedc-deploy @@ -899,6 +899,34 @@ def component_compose_project(component): def component_services(component, entries=None): + if component == "dc-cms" and entries is not None: + selected = [] + + def add(*services): + for service in services: + if service not in selected: + selected.append(service) + + touches_compose = any(rel == "infra/docker-compose.yml" for rel in entries) + touches_proxy = any(rel == "infra/reverse-proxy" or rel.startswith("infra/reverse-proxy/") for rel in entries) + touches_authentik = any(rel == "infra/authentik" or rel.startswith("infra/authentik/") for rel in entries) + touches_app = any( + rel in ("Dockerfile", "package.json", "package-lock.json", "README.md") + or rel.startswith(("admin/", "projects/", "server/")) + for rel in entries + ) + + if touches_compose: + return COMPONENTS[component]["services"] + if touches_authentik: + add("postgresql-authentik", "authentik-server", "authentik-worker", "authentik-bootstrap", "cms-app", "reverse-proxy") + if touches_app: + add("cms-app") + if touches_proxy: + add("reverse-proxy") + if selected: + return tuple(selected) + if component == "tasker" and entries is not None: selected = ["api", "worker", "beat-worker", "web"] touches_compose = any( @@ -942,6 +970,16 @@ def component_services(component, entries=None): return COMPONENTS[component]["services"] +def component_compose_no_deps(component, entries=None): + if component == "dc-cms" and entries is not None: + touches_compose = any(rel == "infra/docker-compose.yml" for rel in entries) + touches_proxy = any(rel == "infra/reverse-proxy" or rel.startswith("infra/reverse-proxy/") for rel in entries) + touches_authentik = any(rel == "infra/authentik" or rel.startswith("infra/authentik/") for rel in entries) + return not (touches_compose or touches_proxy or touches_authentik) + + return bool(COMPONENTS[component].get("compose_no_deps")) + + def component_compose_files(component): return COMPONENTS[component].get("compose_files", ()) @@ -1182,12 +1220,12 @@ def compose_base_cmd(component): return cmd -def run_compose(component, services): +def run_compose(component, services, entries=None): compose_root = component_compose_root(component) cmd = [*compose_base_cmd(component), "up", "-d", "--force-recreate"] if COMPONENTS[component].get("compose_build"): cmd.append("--build") - if COMPONENTS[component].get("compose_no_deps"): + if component_compose_no_deps(component, entries): cmd.append("--no-deps") cmd.extend(services) try: @@ -1218,7 +1256,7 @@ def prepare_component_runtime(component): def run_component_runtime(component, entries, services): run_build(component, entries) prepare_component_runtime(component) - run_compose(component, services) + run_compose(component, services, entries) def healthcheck_url(check):