Files
peardata/docs/CI.md
T
Raven Scott 5521f2952a
CI / test (push) Successful in 1m1s
Release rolling / release (push) Has been cancelled
Update Docs
2026-07-19 13:35:19 -04:00

2.7 KiB

CI & pipelines

PearData mirrors the PearDock-style cross-compile from one Linux runner pipeline: Bare servers + Electron clients, published as rolling / tagged releases.

Host matrix

Product Hosts
Server (Bare) linux-x64, linux-arm64 only
Client (Electron) linux-x64, linux-arm64, darwin-x64, darwin-arm64, win32-x64, win32-arm64

Gitea Actions

Workflow Trigger Job
.gitea/workflows/ci.yml push / PR / manual install, npm test
.gitea/workflows/release-rolling.yml every push to main/master + manual test → build matrix → Gitea tag rolling

Rolling job (ubuntu-latest, ~180m timeout):

  1. System deps for Electron packaging
  2. npm ci --ignore-scripts + esbuild install
  3. SKIP_INTEGRATION=1 npm test
  4. Install vendored tools/rcodesign (darwin client seal-sign)
  5. scripts/gitea-rolling-release.sh
    • make.cjs serverpeardata-server-*.tar.gz
    • make.cjs clientpeardata-client-*.tar.gz
    • upload to rolling prerelease

Manual inputs: skip_client, server_hosts, client_hosts, dry_run.

Secret: RELEASE_TOKEN (required to publish). Optional GITEA_URL.

GitHub Actions

Workflow Trigger Jobs
.github/workflows/ci.yml push / PR / manual test (Node 20+22), lint-docs
.github/workflows/release.yml v* tags / manual Same binary matrix → GitHub Release assets

Local parity

npm install
SKIP_INTEGRATION=1 npm test

# Server (Linux Bare)
npm run make:server:linux-x64

# Client (Electron)
npm run make:client:linux-x64

# Full matrix (slow)
npm run make

# Stage release archives without upload
DRY_RUN=1 bash scripts/gitea-rolling-release.sh

Key scripts

Script Role
scripts/install.sh End-user installer (server systemd + desktop client; journal + Docker socket when detected)
scripts/hosts.cjs Host lists (SERVER_LINUX, ALL_64)
scripts/make.cjs Orchestrate server/client builds
scripts/bare-standalone.cjs Pack Bare peardata-server
scripts/build-client-bundle.cjs esbuild GUI → electron/app.bundle.cjs
scripts/predownload-electron.cjs Pre-fetch Electron zips for CI
scripts/sign-macos-app.cjs Darwin client codesign
scripts/gitea-rolling-release.sh Build + stage + Gitea upload
forge.config.cjs Electron Forge packaging

Integration tests in CI

Release workflows set SKIP_INTEGRATION=1. Unit CI may run integration when the runner allows DHT/UDP. See TESTING.md.