[Bug] Local UI images never rebuild on source change (orchestrator gap) #34

Closed
opened 2026-06-16 10:40:24 +00:00 by lfg2025 · 2 comments
Owner

prod_orchestrator builds archy-*-ui:local images only when image_exists==false (prod_orchestrator.rs:1416,1823) — no content-change check. Once a node builds bitcoin-ui/fedimint-ui/etc., later source changes (index.html, nginx.conf) never reach it via OTA. This is why the bitcoin RPC relay UI never surfaced and why the fedimint-ui CSS fix did not reach existing nodes. Fix: hash the build context into the image tag/label, rebuild when it changes. Fresh ISOs unaffected. (Found 2026-06-16)

prod_orchestrator builds archy-*-ui:local images only when image_exists==false (prod_orchestrator.rs:1416,1823) — no content-change check. Once a node builds bitcoin-ui/fedimint-ui/etc., later source changes (index.html, nginx.conf) never reach it via OTA. This is why the bitcoin RPC relay UI never surfaced and why the fedimint-ui CSS fix did not reach existing nodes. Fix: hash the build context into the image tag/label, rebuild when it changes. Fresh ISOs unaffected. (Found 2026-06-16)
Author
Owner

Being addressed by the app-catalog work (decouples app images from the shipped manifest so per-app image updates no longer need a binary release). Live on .116/.198.

Being addressed by the app-catalog work (decouples app images from the shipped manifest so per-app image updates no longer need a binary release). Live on .116/.198.
Author
Owner

Fixed in commit 3aea8c5b. The orchestrator only checked whether the build-image tag existed, so a changed neode-ui dist (bitcoin-ui/lnd-ui/electrs-ui) never triggered a rebuild. It now gates the build on a content fingerprint (sorted relative path + length + mtime, SHA-256) of the build context recorded per-tag under data_dir, and rebuilds whenever the fingerprint changes. podman's COPY-layer cache keeps a no-op rebuild cheap. Unit-tested. Pending live deploy verification.

Fixed in commit 3aea8c5b. The orchestrator only checked whether the build-image *tag* existed, so a changed neode-ui dist (bitcoin-ui/lnd-ui/electrs-ui) never triggered a rebuild. It now gates the build on a content fingerprint (sorted relative path + length + mtime, SHA-256) of the build context recorded per-tag under data_dir, and rebuilds whenever the fingerprint changes. podman's COPY-layer cache keeps a no-op rebuild cheap. Unit-tested. Pending live deploy verification.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: lfg2025/archy#34
No description provided.