Releases
How PearDock binaries are built, signed, and published for all 64-bit hosts.
Host matrix
No 32-bit (ia32 / armv7) builds.
| Host | Server (Bare) | Client (Electron) |
|---|---|---|
linux-x64 | ✅ | ✅ |
linux-arm64 | ✅ | ✅ |
darwin-x64 | ✅ | ✅ (ad-hoc from Linux CI) |
darwin-arm64 | ✅ | ✅ (ad-hoc from Linux CI) |
win32-x64 | ✅ | ✅ |
win32-arm64 | ✅ | ✅ |
Canonical list: scripts/hosts.cjs → ALL_64.
Builders
| Artifact | Tooling |
|---|---|
| peardock-server | scripts/bare-standalone.cjs (bare-pack + bare-runtime prebuild embed) |
| peardock-client | esbuild → electron/app.bundle.cjs, then electron-forge package |
Local builds
npm ci
# All 64-bit server + client hosts (same as CI)
npm run make
# Server only / client only
npm run make:server
npm run make:client
# Single host
npm run make:server:linux-x64
npm run make:client:darwin-arm64
Outputs:
out/peardock-server-<host>/peardock-server[.exe]
out/peardock-<platform>-<arch>/ # e.g. peardock.app on macOS
PEARDOCK_SERVER_HOSTS=linux-x64,win32-x64 \
PEARDOCK_CLIENT_HOSTS=darwin-arm64,linux-x64 \
npm run make
Asset naming
Published under tag rolling:
peardock-server-VERSION-HOST.tar.gz
peardock-server-VERSION-HOST.tar.gz.sha256
peardock-client-VERSION-HOST.tar.gz
peardock-client-VERSION-HOST.tar.gz.sha256
# HOST examples: linux-x64, darwin-arm64, win32-x64
# Example: peardock-server-2.0.1-linux-x64.tar.gz
The one-line installer resolves VERSION from the release API (or
PEARDOCK_VERSION) and downloads the matching host triple.
Gitea CI rolling release
Workflow: .gitea/workflows/release-rolling.yml
Script: scripts/gitea-rolling-release.sh
| Secret | Purpose |
|---|---|
RELEASE_TOKEN | Gitea PAT with release write |
GITEA_URL | Optional forge base URL |
On every push to main (and workflow_dispatch), Ubuntu CI:
- Installs deps (lifecycle scripts skipped for hang safety)
- Installs vendored
rcodesignfor macOS ad-hoc signing - Cross-builds all six server hosts
- Cross-packages all six Electron clients (target prebuilds only)
- Stages tarballs + SHA-256 under
dist/release/ - Recreates tag/release rolling and uploads assets
DRY_RUN=1 bash scripts/gitea-rolling-release.sh
Install / upgrade production hosts:
curl -fsSL https://install.peardock.boats | bash -s -- --server --yes
Live asset list: peardock.boats/releases
(proxied from
Gitea).
Notes
- macOS clients are ad-hoc codesigned after package so Gatekeeper does not show “damaged”. Re-sign:
npm run sign:macos -- out/peardock-darwin-arm64/peardock.app - Native modules ship prebuilds per target; rebuild-from-source is disabled for cross packages.
- Server cross-compile uses bare-runtime platform prebuilds (no Docker-in-Docker required to build).
Checksums & SBOM
./scripts/release-checksums.sh dist/
# SBOM notes: docs/SBOM.md in the main repo
npx @cyclonedx/cyclonedx-npm --output-file peardock-sbom.json