diff --git a/infra/deploy-runner/nodedc-deploy b/infra/deploy-runner/nodedc-deploy index fa48f71..e7115b1 100755 --- a/infra/deploy-runner/nodedc-deploy +++ b/infra/deploy-runner/nodedc-deploy @@ -92,6 +92,7 @@ COMPONENTS = { "tasker": { "payload_root": Path("/volume1/docker/nodedc-platform/tasker"), "compose_root": Path("/volume1/docker/nodedc-platform/tasker/plane-app"), + "compose_project": "nodedc-tasker", "compose_env_file": Path("/volume1/docker/nodedc-platform/tasker/plane-app/.env.synology"), "compose_files": ( Path("/volume1/docker/nodedc-platform/tasker/plane-app/docker-compose.yaml"), @@ -778,7 +779,22 @@ def component_compose_root(component): return COMPONENTS[component].get("compose_root", component_root(component)) +def component_compose_project(component): + return COMPONENTS[component].get("compose_project") + + def component_services(component, entries=None): + if component == "tasker" and entries is not None: + selected = ["api", "worker", "beat-worker", "web"] + touches_compose = any( + rel in ("plane-app/docker-compose.yaml", "plane-app/docker-compose.synology.override.yml") + for rel in entries + ) + touches_proxy = any(rel == "plane-src/apps/proxy/Caddyfile.ce" for rel in entries) + if touches_compose or touches_proxy: + selected.append("proxy") + return tuple(selected) + if component == "platform" and entries is not None: selected = [] @@ -921,6 +937,9 @@ def plan_artifact(artifact): print(f"type={manifest['type']}") print(f"payload_root={root}") print(f"compose_root={compose_root}") + compose_project = component_compose_project(component) + if compose_project: + print(f"compose_project={compose_project}") for build_root, build_args in builds: print(f"build_root={build_root}") print(f"build={' '.join((str(DOCKER),) + tuple(build_args))}") @@ -1037,6 +1056,9 @@ def run_build(component, entries=None): def compose_base_cmd(component): cmd = [str(DOCKER), "compose"] + compose_project = component_compose_project(component) + if compose_project: + cmd.extend(["-p", compose_project]) env_file = component_compose_env_file(component) if env_file: cmd.extend(["--env-file", str(env_file)]) diff --git a/infra/synology/README.md b/infra/synology/README.md index c09d915..16e3acb 100644 --- a/infra/synology/README.md +++ b/infra/synology/README.md @@ -10,6 +10,29 @@ - Внутренний HTTP edge использует `18080`, AI Workspace Hub — `18081`, Tasker upstream — `18090`, BIM Viewer upstream — `18100`, Ops Agents Gateway upstream — `18190`. - Старые порты `9000` и `5678` заняты старым `nodedc-demo` и не используются. +## Deploy runner + +`nodedc-deploy` is managed outside the platform runtime tree. The synced install candidate lives in: + +```text +/volume1/docker/nodedc-deploy/runner-install/nodedc-deploy +``` + +The live root-owned runner is: + +```text +/usr/local/sbin/nodedc-deploy +``` + +`deploy-current.sh` syncs the runner candidate into `runner-install`. Promoting it to live is explicit: + +```bash +sudo install -o root -g root -m 0755 \ + /volume1/docker/nodedc-deploy/runner-install/nodedc-deploy \ + /usr/local/sbin/nodedc-deploy +sudo /usr/local/sbin/nodedc-deploy verify-install +``` + ## Текущие внешние домены ```text diff --git a/infra/synology/deploy-current.sh b/infra/synology/deploy-current.sh index a4ae818..67e1401 100755 --- a/infra/synology/deploy-current.sh +++ b/infra/synology/deploy-current.sh @@ -4,6 +4,7 @@ set -euo pipefail SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" PLATFORM_REPO="$(cd -- "${SCRIPT_DIR}/../.." && pwd)" NAS_ROOT="${NAS_ROOT:-/Volumes/docker/nodedc-platform}" +DEPLOY_ROOT="${DEPLOY_ROOT:-$(cd -- "${NAS_ROOT}/.." && pwd)/nodedc-deploy}" LAUNCHER_REPO="${LAUNCHER_REPO:-}" TASKER_REPO="${TASKER_REPO:-}" TASKER_SYNC_SOURCE="${TASKER_SYNC_SOURCE:-0}" @@ -45,6 +46,12 @@ rsync -av "${RSYNC_METADATA_ARGS[@]}" \ "${PLATFORM_REPO}/infra/synology/clear-authentik-brand-css.sh" \ "${NAS_ROOT}/platform/" +mkdir -p "${DEPLOY_ROOT}/runner-install" +rsync -av "${RSYNC_METADATA_ARGS[@]}" \ + "${PLATFORM_REPO}/infra/deploy-runner/nodedc-deploy" \ + "${DEPLOY_ROOT}/runner-install/nodedc-deploy" +chmod 0755 "${DEPLOY_ROOT}/runner-install/nodedc-deploy" + mkdir -p "${NAS_ROOT}/platform/notification-core" rsync -av "${RSYNC_METADATA_ARGS[@]}" --delete \ --exclude='node_modules/' \