feat(crawler): system Chromium via CRAWLER_CHROMIUM_BINARY (0.45.0) #2

Merged
fabi merged 2 commits from feat/crawler-system-chromium into main 2026-05-31 15:47:47 +00:00
Owner

Implements the verified Chromium-on-ARM plan: CRAWLER_CHROMIUM_BINARY makes the crawler launcher skip chromiumoxide's fetcher (no usable Linux_arm64 build) and use a system Chromium; an INSTALL_CHROMIUM build-arg adds Debian's chromium-headless-shell + fonts-liberation to the runtime image.

Reviewed & approved:

  • browser.rs: pure, unit-tested resolver; treats exported-but-empty as unset (handles compose ${VAR:-}); falls back to the fetcher when unset. 3 tests.
  • Uses the chromium-headless-shell binary verified in Phase 0 (CDP handshake confirmed on the Pi).
  • Lockstep 0.45.0 bump.

Includes a merge of main to pick up #1's build fixes (trixie runtime, crawler-bin stub, IPv4 frontend healthcheck) + the no-SSH deploy job. The merged backend/Dockerfile correctly combines the trixie runtime with the chromium install.

Note: CI build-and-push doesn't pass INSTALL_CHROMIUM=true, so the shipped image stays slim — fine while the crawler is off (CRAWLER_DAEMON=false); building the Pi image with chromium needs that build-arg.

🤖 Generated with Claude Code

Implements the verified Chromium-on-ARM plan: `CRAWLER_CHROMIUM_BINARY` makes the crawler launcher skip chromiumoxide's fetcher (no usable Linux_arm64 build) and use a system Chromium; an `INSTALL_CHROMIUM` build-arg adds Debian's `chromium-headless-shell` + `fonts-liberation` to the runtime image. **Reviewed & approved:** - `browser.rs`: pure, unit-tested resolver; treats exported-but-empty as unset (handles compose `${VAR:-}`); falls back to the fetcher when unset. 3 tests. - Uses the **`chromium-headless-shell`** binary verified in Phase 0 (CDP handshake confirmed on the Pi). - Lockstep 0.45.0 bump. Includes a merge of `main` to pick up #1's build fixes (trixie runtime, crawler-bin stub, IPv4 frontend healthcheck) + the no-SSH deploy job. The merged `backend/Dockerfile` correctly combines the trixie runtime with the chromium install. Note: CI `build-and-push` doesn't pass `INSTALL_CHROMIUM=true`, so the shipped image stays slim — fine while the crawler is off (`CRAWLER_DAEMON=false`); building the Pi image with chromium needs that build-arg. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fabi added 2 commits 2026-05-31 15:47:46 +00:00
Skips the chromiumoxide fetcher when CRAWLER_CHROMIUM_BINARY is set,
unblocking Linux_arm64 deployments (Raspberry Pi 5) where the
fetcher's upstream snapshot bucket has no reliable build. The
Dockerfile gains an INSTALL_CHROMIUM build-arg that adds
chromium-headless-shell + fonts-liberation to the runtime image when
set; default off so cloud/x86 images stay slim.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Merge remote-tracking branch 'origin/main' into feat/crawler-system-chromium
Some checks failed
deploy / test-backend (pull_request) Failing after 6s
deploy / test-frontend (pull_request) Failing after 33s
deploy / build-and-push (pull_request) Has been skipped
deploy / deploy (pull_request) Has been skipped
2f9037e210
fabi merged commit 6b49a47d0a into main 2026-05-31 15:47:47 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: fabi/Mangalord#2