Build production from the pinned Bun 1.4.0 Dockerfile and check it in CI (#89) #41
No reviewers
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
backmeupplz/jev_antispam_bot!41
Loading…
Reference in a new issue
No description provided.
Delete branch "89-pin-deploy-bun"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Board ticket: https://agentboard.icefish-betta.ts.net/#89
Problem
The Easypanel service
bots/jev-antispam-botbuilds with Nixpacks 1.41.0, which installs Bun 1.3.0 from nixpkgs. CI pins Bun 1.4.0. Bun 1.3 cannot readbun.lock(lockfileVersion 2), so it prints "Ignoring lockfile" and production installs dependency versions that CI never tested. Test code that is valid on 1.4 can also break the deploy-timebun run check; that is what broke the9cefa2ddeploy (#88, PR #40).Change
oven/bun:1.4.0-slim(Debian/glibc, close to the current Ubuntu Nixpacks runtime; it includes theopensslthe TLS test needs).checkstage runsbun install --frozen-lockfileandbun run checkon the same Bun that runs the bot. This keeps the existing deploy-time gate. The runtime stage copies a marker fromcheck, so BuildKit cannot skip that stage.bun install --frozen-lockfile --productionand then copiessrcandmigrations(as before) plusscripts/. The old Nixpacks image contained the whole repo, and the documented in-container release proofbun scripts/audit-report.ts checkneedsscripts/.BUN_VERSION: 1.4.0env, whichsetup-bunuses. A newdeploy-imagejob fails if any DockerfileFROMline differs fromoven/bun:${BUN_VERSION}-slim, then builds the production image (running the check stage).Rollout (after merge)
Switch the Easypanel service's build type from Nixpacks to Dockerfile (
Dockerfile). Source, env, deploy settings and mounts stay unchanged, anddeploy.commandstays null so the image CMD (bun run src/index.ts, same asbun start) applies. Then deploy, and verify that the action reachesdone, the build log showsbun install v1.4.0with no "Ignoring lockfile", and the running commit matches.Tests
docker build(linux/arm64):bun install v1.4.0, frozen lockfile honoured, check stage 495 pass / 0 fail (DB/live tests skip as in the old deploy build). The image starts and fails fast only on missing runtime config, as expected without env.