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

bash
fastlane add_plugin pharen

One-time prerequisites, per repo:

  • the pharen CLI on your PATH (the plugin is a thin wrapper over it; provided when we onboard your team — see the CLI reference);
  • a committed .pharen.yml at the repo root (org: and app: — no secrets);
  • PHAREN_AUTH_TOKEN in the environment (a CI secret; the plugin never reads or echoes it).

The whole integration

Call pharen_release right after build_app:

rubyFastfile
lane :beta do
  build_app(scheme: "MyApp")
  pharen_release
end

With 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:

rubyFastfile
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 link

Failure 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

OptionEnvDefaultDescription
ipaPHAREN_IPAlane contextPath to the .ipa. Defaults to what gym / build_app left behind.
dsym_pathsPHAREN_DSYM_PATHSlane contextdSYM bundles or zips to upload. Defaults to gym's output plus any download_dsyms results.
pharen_binaryPHAREN_BINARYpharenCommand that invokes the CLI (may include arguments, e.g. node /path/to/cli.js).
strictPHAREN_STRICTfalseFail 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

OptionEnvDefaultDescription
ipaPHAREN_IPAlane contextPath to the .ipa. Defaults to the lane context.
pharen_binaryPHAREN_BINARYpharenCommand that invokes the CLI.
strictPHAREN_STRICTfalseFail on error instead of warning.

pharen_upload_symbols

OptionEnvDefaultDescription
dsym_pathsPHAREN_DSYM_PATHSlane contextdSYM inputs — .dSYM bundles, dSYM .zip files, or raw DWARF binaries.
pharen_binaryPHAREN_BINARYpharenCommand that invokes the CLI.
strictPHAREN_STRICTfalseFail on error instead of warning.