summaryrefslogtreecommitdiff
path: root/internal/deploy/deploy.go
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-08-25 21:22:55 -0500
committerClaude <noreply@anthropic.com>2026-08-25 21:22:55 -0500
commit9d934f49d032694e98f799f042e5eca30de6119c (patch)
treef0f542f0632a08e50ddd28337fe4edced601b79e /internal/deploy/deploy.go
parentacde3827f60bc90738429fa490a36a1856a93283 (diff)
Run app builds inside the jail via jexec, not the host
Builds previously ran as a bare host process, sharing one host-wide toolchain across every app - a Go/gcc upgrade on the host silently changed what the next deploy of any app picked up, and cgo builds needed the exact right headers/compiler on the host regardless of what each app actually targets. Routing the build through jexec, the same mechanism release.Run already uses for the release phase, gives each app's own persistent jail an independently-managed toolchain instead.
Diffstat (limited to 'internal/deploy/deploy.go')
-rw-r--r--internal/deploy/deploy.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/internal/deploy/deploy.go b/internal/deploy/deploy.go
index 751c976..30846ac 100644
--- a/internal/deploy/deploy.go
+++ b/internal/deploy/deploy.go
@@ -63,7 +63,7 @@ func Run(ctx context.Context, out io.Writer, cfg layout.Config, app, sha string)
}()
fmt.Fprintln(out, "==> building")
- if err := sh.Run(ctx, out, releaseDir, "make", "-B"); err != nil {
+ if err := sh.Run(ctx, out, "", "jexec", app, "make", "-B", "-C", cfg.ReleaseDirInJail(sha)); err != nil {
return fmt.Errorf("build: %w", err)
}
if _, err := os.Stat(filepath.Join(releaseDir, "app")); err != nil {