mirror of
https://seed.radicle.dev/rad:z4D5UCArafTzTQpDZNQRuqswh3ury.git
synced 2026-10-18 19:10:45 +08:00
Pin source mtimes to the commit time at image build, so cargo's fingerprints survive the image layer and the warm build stays fresh. Build with line-tables-only debug info and drop the incremental cache to shrink the baked target/.
2.0 KiB
2.0 KiB
radicle-desktop environment
This repository's .ryph/Dockerfile is the machine for the whole Radicle
workspace. On top of the universal image it adds:
- Tauri's system libraries (
libwebkit2gtk-4.1-dev,libjavascriptcoregtk-4.1-dev,libayatana-appindicator3-dev,librsvg2-dev,libxdo-dev), so the Rust crates build here; - the OS libraries Playwright's Chromium and WebKit need, and
bzip2; golangci-lintv2.14.0 in/usr/local/bin, for garden-broker;MISE_IDIOMATIC_VERSION_FILE_ENABLE_TOOLS=node,python,deno,bun, so mise does not read ago.modgoline as a pin: Go is the image's own.CARGO_PROFILE_DEV_DEBUG=line-tables-only: dev and test builds carry line tables, not full debug info. Backtraces keep file and line. Do not override it, or every crate rebuilds.
.ryph/setup.yml installs the npm dependencies, Playwright's WebKit and the
pinned Radicle binaries (tests/tmp/bin), and warms clippy, the test build
and the e2e backend (test-http-api, rad-job) in target/. Node 24.15.0
(.nvmrc) and Rust 1.97.1 (rust-toolchain.toml) are installed by mise and
rustup on first use.
Checks (what CI runs)
npm run check-js # svelte-check, eslint, prettier
scripts/check-rs # cargo fmt --check, clippy -Dwarnings, cargo test
npm run test:unit
npm run test:e2e # WebKit; needs scripts/install-binaries, done by setup
npm run check:ci runs all of them in order and logs to
tests/tmp/check-ci.log. The machine has 2 CPUs: the Rust test build and the
e2e suite are the slow parts.
What does not work here
- Chromium cannot be installed by Playwright: its download redirects to
storage.googleapis.com, which the egress allowlist refuses. This app's e2e tests use WebKit only and are unaffected; radicle-explorer's and always-on-node's Chromium e2e tests are. - There is no container runtime, so nothing that runs
dockerorpodmanworks (always-on-node'spnpm test:e2e, garden-broker's integration tests).