fix(selfhost): stop deploy-selfhost-image.sh silently losing to a build: override#3884
Conversation
…ld: override The script's generated temp override only set `image:` for the target service. When an operator's own docker-compose.override.yml also defines a `build:` block for that same service (a sanctioned self-host customization, e.g. a local INSTALL_AI_CLIS install), `docker compose up --no-build` still preferred the pre-existing project-scoped build artifact over the newly pulled image -- silently. The script reported success, the container recreated and passed health checks, but was still running the old locally-built image. Reproduced live during an orb-v0.3.0 deploy: the pulled image sat on disk, healthy, unused, while the container kept running a stale build missing a since-added migration. Add `build: !reset null` to the generated override so the pulled image always wins regardless of what base/override compose files define. Confirmed harmless when no build: block exists at all.
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-07 05:20:24 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 4 non-blocking
Concerns raised — review before merging
Review context
Contributor next steps
Signal definitions
🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3884 +/- ##
=======================================
Coverage 93.57% 93.57%
=======================================
Files 340 340
Lines 33516 33516
Branches 12262 12262
=======================================
Hits 31364 31364
Misses 1528 1528
Partials 624 624 🚀 New features to boost your workflow:
|
Summary
scripts/deploy-selfhost-image.sh's generated temp compose override only setimage:for the target service. When an operator's owndocker-compose.override.ymlalso defines abuild:block for that same service (a sanctioned self-host customization -- e.g. the documented localINSTALL_AI_CLISinstall pattern),docker compose up --no-build --no-depsstill preferred the pre-existing project-scoped build artifact over the freshly pulled image, silently. The script reports success, the container recreates and passes health checks, but keeps running the stale locally-built image.orb-v0.3.0:docker compose pullcorrectly fetched the new image (confirmed present viadocker images), the script reportedgittensory is healthy, butdocker inspect'sImagefield showed the container was still running the old local build -- missing a since-added migration and reporting a staleGITTENSORY_VERSION.build: !reset nullto the generated override so the pulledimage:always wins regardless of what the base/override compose files define. Verified locally with realdocker compose configagainst both a no-build:-block case (no-op, confirmed harmless) and a merged-build:-across-two-files case (matches the VPS scenario, confirmed the reset works).Scope
type(scope): short summaryConventional Commit format, for examplefix(api): restore profile access checks.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.src/**surface touched.Validation
git diff --checknpm run typechecknpm run test:ci(full local gate, green -- 540 test files / 10,762 tests passed, 2 files / 7 tests skipped)npm audit --audit-level=moderate(0 vulnerabilities)test/unit/selfhost-image-deploy.test.ts's fake-docker harness to capture the full generated override content (previously only grepped theimage:line) and added a regression assertion thatbuild: !reset nullis present in every image-precedence scenario.src/**files touched, socodecov/patchis not applicable to this PR.Safety
UI Evidencesection. — N/A, no UI changes.