Nodus
Developers

CI

The GitHub Actions workflows and what each runs.

CI is split by changed path so a Rust-only change does not run the TypeScript pipeline, and vice versa.

ci-ts.yml

Triggers on apps/**, packages/**, workspace/turbo/lockfile changes, and on PRs to main.

  • lint-build-test — pnpm install, turbo lint, turbo build, turbo test.
  • mobile — builds --filter=mobile..., then mobile lint / check-types / test / build.

ci-go.yml

Triggers on services/relay/**.

  • lint-build-test — go vet, gofmt, build, test.
  • vuln-scan — govulncheck.
  • integration-test — ./scripts/test-integration.sh.

ci-rust.yml

Triggers on services/storage-node/**.

  • lint-build-test — cargo fmt --check, clippy -D warnings, build, test.
  • audit — rustsec audit-check with a pinned ignore list.

release-node.yml

Triggers on node-v* tags. Re-runs the Rust fmt/clippy/test gates, checks the tag against services/storage-node/Cargo.toml, builds a static Linux x86_64 binary, and opens a draft GitHub Release with the tarball and its SHA-256. Cut a release with bash scripts/release-node.sh <version> and publish the draft after reviewing its notes.

release-mobile.yml

Triggers on mobile-v* tags. Checks the tag against apps/mobile/app.json, builds the workspace packages, regenerates the native Android project with Expo prebuild, and assembles a universal release APK. It opens a draft GitHub Release with the APK and its SHA-256. The build needs the GOOGLE_SERVICES_JSON repository secret (the Firebase config is not committed). APKs are debug-signed until a release keystore is configured.

e2e.yml

Not a required PR check. Runs on workflow_dispatch, a nightly schedule, and on PRs touching deploy/**, scripts/e2e-*, services/**, apps/**, or packages/**.

It builds the Rust node and TS packages, starts the Compose unit, waits for Relay health, then runs the bootstrap-pairing and Path C end-to-end harnesses, dumping logs on failure.

Local pre-push

make install-hooks installs scripts/pre-push, which runs gofmt checks, cargo fmt --check, and cargo clippy -D warnings before you push.

On this page