.revyl/config.yaml is the configuration file for local and remote builds. It
is generated when revyl init runs for the first time in your project.
Optional overrides can also be passed into revyl build.
A complete example
- Expo
- React Native
- iOS
- Android
Platform entries
Each key underbuild.platforms is a named build stream. The key must be, or
contain, ios or android. ios, android, ios-dev, and android-release
all work. Pass the key to --platform; passing just ios or android picks
the best-matching stream.
| Field | Required | Description |
|---|---|---|
app_id | Yes | UUID of the Revyl app that stores this stream’s builds. |
commands | One of commands/command | Ordered build commands, run in sequence. Takes precedence over command. |
command | One of commands/command | Single build command. |
setup | No | Optional command run before commands. |
output | Recommended | Path or glob to the built artifact, relative to the project root. See artifact resolution. |
scheme | No | Xcode scheme. When set, the CLI applies it to xcodebuild commands. iOS only. |
image | No | Toolchain image key to build on. Defaults to the platform’s current default image. |
env | No | Environment variables for the build. See environment variables. |
caches | No | Cache disks for this stream. See Caching. |
commands entry is a shell command, so
cd android && ./gradlew … and A=B tool … both work.
Artifact resolution
After the last command exits 0, Revyl resolves the artifact:- iOS:
outputpath or glob pointing at a simulator.appbundle. If unset, Revyl searchesbuild/**/*.app. The bundle must be a simulator build (-sdk iphonesimulator). - Android:
outputpath or glob pointing at an.apk. If unset, Revyl searches**/build/outputs/apk/**/*.apk..aabartifacts are rejected.
output explicitly whenever more than one artifact could match, like a flavor
matrix producing several APKs, or a cached DerivedData directory holding stale
products.
Environment variables
Variables are exported into the shell for every build command, so use whatever your toolchain reads —EXPO_PUBLIC_* variables that Expo inlines into the
bundle, ENVFILE for react-native-config, or auth tokens for private
registries and Sentry uploads:
--env values take precedence over the config file’s env map.
Private registries. Pass tokens through
env and use your normal install
commands to configure npm, CocoaPods, Gradle, or Git credentials. If your
dependencies are only reachable on a private network, contact
[email protected].Repo-backed builds
For repositories too large to upload per build, configure a Git source so the runner fetches code directly:CLI reference
| Flag | Description |
|---|---|
--platform <key> | Platform or config key: ios, android, ios-dev, … Defaults to ios. |
--app <id> | App UUID override. Defaults to the stream’s app_id. |
--image <key> | Toolchain image override. Wins over the config image field. |
--env KEY=VALUE | Environment override, repeatable. Wins over the config env map. |
--version <string> | Version label for the registered build. Auto-generated when omitted. |
--detach | Queue the build and return the job ID without waiting. |
--no-cache | Run this build without restoring or saving caches. |
--no-set-current | Don’t make the new version the app’s current build. |
--json | Machine-readable result on stdout. |
--debug | Stream full build logs while following. |
Timeout
Remote builds are stopped by the server when they exceed their timeout — 60 minutes by default, up to a maximum of 4 hours. Optionally set it per platform with thetimeout key, in seconds:
revyl build --remote --timeout 3600.
Ctrl-C stops following the build; the build keeps running in the cloud. Cancel
it with revyl build cancel <build-job-id>.
Related
- Caching: cache disk configuration and semantics
- Toolchain Images: available images and installed tools
- Artifact Requirements: what the
.app/.apkmust look like