Integrations
fastlane plugin
If you already ship with fastlane, the plugin folds Pharen's whole release step into one call. It derives everything it needs from your lane context and the built artifacts — you configure nothing in the lane itself.
Install
fastlane add_plugin pharenOne-time prerequisites, per repo:
- the
pharenCLI on yourPATH(the plugin is a thin wrapper over it; provided when we onboard your team — see the CLI reference); - a committed
.pharen.ymlat the repo root (org:andapp:— no secrets); PHAREN_AUTH_TOKENin the environment (a CI secret; the plugin never reads or echoes it).
The whole integration
Call pharen_release right after build_app:
lane :beta do
build_app(scheme: "MyApp")
pharen_release
endWith no arguments, pharen_release finds the IPA and dSYMs in the lane context, reads the version, build number, and bundle id from the IPA's own Info.plist, and takes the commit sha from git. It then registers the release, uploads every dSYM the archive produced, uploads the build, prints the OTA install link, and returns it — also in lane_context[SharedValues::PHAREN_INSTALL_URL].
À la carte
Prefer to run the steps separately? Two more actions, both zero-arg after a build:
pharen_upload_symbols # dSYMs from the lane context
pharen_upload_symbols(dsym_paths: ["build/MyApp.dSYM"]) # or explicit
pharen_upload_build # IPA from the lane context → install linkFailure posture
The default is warn, don't fail — a telemetry hiccup shouldn't kill a release build. Pass strict: true (or set PHAREN_STRICT=1) in CI lanes where an unsymbolicated or undistributed release must be a hard stop. A missing dSYM always warns loudly, in both modes: a build shipped without symbols produces crashes that can never be read. Re-runs are safe — the server deduplicates symbols by debug id, and the underlying commands exit cleanly when everything is already present.
Options
pharen_release
| Option | Env | Default | Description |
|---|---|---|---|
ipa | PHAREN_IPA | lane context | Path to the .ipa. Defaults to what gym / build_app left behind. |
dsym_paths | PHAREN_DSYM_PATHS | lane context | dSYM bundles or zips to upload. Defaults to gym's output plus any download_dsyms results. |
pharen_binary | PHAREN_BINARY | pharen | Command that invokes the CLI (may include arguments, e.g. node /path/to/cli.js). |
strict | PHAREN_STRICT | false | Fail the lane on any step's error instead of warning and continuing. |
Returns the install-link string (nil when skipped or failed-but-not-strict), and sets PHAREN_INSTALL_URL.
pharen_upload_build
| Option | Env | Default | Description |
|---|---|---|---|
ipa | PHAREN_IPA | lane context | Path to the .ipa. Defaults to the lane context. |
pharen_binary | PHAREN_BINARY | pharen | Command that invokes the CLI. |
strict | PHAREN_STRICT | false | Fail on error instead of warning. |
pharen_upload_symbols
| Option | Env | Default | Description |
|---|---|---|---|
dsym_paths | PHAREN_DSYM_PATHS | lane context | dSYM inputs — .dSYM bundles, dSYM .zip files, or raw DWARF binaries. |
pharen_binary | PHAREN_BINARY | pharen | Command that invokes the CLI. |
strict | PHAREN_STRICT | false | Fail on error instead of warning. |