Build worker for the Perry ecosystem, targeting macOS, iOS, and Android. Connects to Perry Hub via WebSocket, receives build jobs, and returns signed artifacts.
Perry Hub ──WebSocket──► This Worker
│ │
│ job_assign ├─ compile (perry compiler)
│ (manifest + tarball) ├─ package (.app / .ipa / .apk)
│ ├─ sign (codesign / keystore)
│ ◄── progress/logs ────├─ publish (App Store / Play Store)
│ ◄── artifacts ────────┘
- Worker connects to hub, sends
worker_hellowith platform capabilities - Hub assigns a job with manifest, credentials, and tarball
- Worker runs: compile → package → sign → (optional) publish
- Progress and logs stream back to hub in real-time
- Built artifacts are uploaded for CLI download
cargo build --releasePERRY_BUILD_PERRY_BINARY=/path/to/perry \
PERRY_HUB_URL=wss://hub.perryts.com/ws \
./target/release/perry-ship| Variable | Default | Description |
|---|---|---|
PERRY_HUB_URL |
wss://hub.perryts.com/ws |
Hub WebSocket URL |
PERRY_HUB_WORKER_SECRET |
(empty) | Shared secret for hub authentication |
PERRY_BUILD_PERRY_BINARY |
perry |
Path to the Perry compiler binary |
PERRY_WORKER_NAME |
hostname | Worker display name |
PERRY_BUILD_ANDROID_HOME |
$ANDROID_HOME |
Android SDK path |
PERRY_BUILD_ANDROID_NDK_HOME |
$ANDROID_NDK_HOME |
Android NDK path |
This worker advertises ["macos", "ios", "android"] to the hub:
- macOS —
.appbundle with code signing and optional notarization - iOS —
.ipawith provisioning profile, optional App Store upload - Android —
.apk/.aabvia Gradle, keystore signing, optional Play Store upload
- Perry compiler
- Xcode + command line tools (for macOS/iOS builds)
- Android SDK + NDK (for Android builds)
- Apple Developer account credentials (for signing/publishing)
- perry — The Perry compiler and CLI
- hub — Central build server
- builder-linux — Linux build worker
- builder-windows — Windows build worker
MIT