Remote builds are an iOS-only capability. Android remote builds are not yet supported.
Who This Is For
Use remote builds when your team needs dedicated iOS simulator build capacity without managing Mac infrastructure. This is especially useful when:- Your CI provider cannot supply enough Mac capacity.
- Your builds need a pinned Xcode/macOS environment.
- You want Revyl to produce the simulator
.appand immediately register it for testing. - Your build depends on private package mirrors or artifact stores that require a private network path.
Get Access
Remote builds require a dedicated build runner provisioned for your organisation. If you don’t have one yet, book a call to get set up:Book a Demo
Schedule a call to provision a dedicated iOS build runner for your org.
Prerequisites
Before using remote builds, make sure you have:- Revyl CLI installed and authenticated — see CLI docs
- An app registered in Revyl — create one from the Builds page or via the CLI
- Source code committed to git —
git archiveat HEAD is used, so only committed files are included - A dedicated iOS build runner provisioned for your org — Revyl will confirm runner availability before uploading source
Configuration
Add abuild section to your .revyl/config.yaml:
| Field | Required | Description |
|---|---|---|
app_id | Yes | UUID of your app in Revyl (find it on the Builds page) |
command | Yes | The xcodebuild command to compile your project |
setup | No | Pre-build setup command (e.g. install dependencies) |
Command Examples
React Native with CocoaPods:Usage
- Check that a build runner is available for your org
- Package your committed source via
git archive - Upload the archive to Revyl
- Trigger the remote build
- Stream build logs until completion
- Register the resulting
.appas a new build version
Private Dependencies
Many enterprise iOS builds need private package mirrors, artifact stores, Git mirrors, license servers, or internal APIs. Revyl supports these with a dedicated runner plus a private network path.Standard Path: No Private Dependencies
If your dependencies are reachable from the public internet, no extra customer networking is required:- Revyl provisions a dedicated runner for your org.
- You configure
.revyl/config.yaml. - You run
revyl build upload --remote. - Revyl uploads source, builds on the runner, and registers the
.app.
PrivateLink Path: Private Dependencies Required
If your build dependencies are private, Revyl can route runner traffic through AWS PrivateLink. Traffic path:| Input | Example |
|---|---|
| First repo/build target | GitLab job, Xcode workspace/project, scheme |
| Build command | xcodebuild -workspace ios/App.xcworkspace -scheme App -sdk iphonesimulator -configuration Debug build |
| Setup command | npm install && cd ios && pod install |
| Expected artifact | Simulator .app produced under DerivedData |
| Private dependency list | Artifactory, npm mirror, CocoaPods mirror, private Git, license server |
| AWS region | For example us-west-2 |
| Endpoint service name | com.amazonaws.vpce.<region>.vpce-svc-... |
| Ports/protocols | HTTPS 443, SSH 22, registry-specific TCP |
| DNS name | The hostname the build tools should use |
| Credentials/secrets | Package manager tokens, certs, Git credentials |
- Dedicated Mac runner provisioning, including M4-class capacity when included in your plan.
- Ansible-based host setup for required Xcode, simulator, proxy, and dependency configuration.
- Runner org labels and queue routing.
- Source upload, log streaming, build registration, and cleanup.
- Consumer interface endpoint setup after your team authorizes Revyl’s AWS principal.
- Runner proxy configuration and validation from the Mac host.
- Choosing the first build target.
- Exposing the private dependency through your endpoint-service pattern.
- Authorizing Revyl’s AWS principal.
- Providing dependency DNS/auth details.
- Confirming whether cross-region PrivateLink is allowed when Revyl and your services are in different AWS regions.
Optional: Private Access to the Revyl API
The PrivateLink path above is for build dependencies that the Revyl runner must reach. Some teams also require their CI system to call the Revyl API or upload source archives through a private path. Treat that as a separate control-plane setup:- Your CI still uses the same Revyl CLI commands.
- Revyl provides the API endpoint details for the private path.
- Your networking team confirms DNS, endpoint policy, and allowed VPCs.
- The build-runner dependency path and the CI-to-Revyl API path can be rolled out independently.
Troubleshooting
No build runner available
Private dependency unreachable
Symptoms:npm install,pod install,swift package resolve, or artifact downloads hang or fail.- The build log shows DNS failures, TCP timeouts, proxy errors, or package-manager authentication errors.
- The endpoint service is approved for Revyl’s AWS principal.
- The endpoint connection is accepted and healthy.
- The dependency hostname resolves on the runner through the intended private path.
- The required port is open from the endpoint service to the NLB target.
- Package-manager credentials are available to the build.
Artifactory, npm, CocoaPods, or SPM auth fails
Remote builds run in a clean runner environment. Make sure your setup command can access the same credentials your CI job uses:- npm:
.npmrcor environment token. - CocoaPods: private specs repo access and Git credentials.
- Swift Package Manager: Git/token access for private packages.
- Artifactory: registry URL, token, and certificate configuration.
Build timeout
Remote builds have a 30-minute execution timeout. If your build consistently times out:- Use
--cleansparingly (cold builds are slower) - Check if your setup command installs unnecessary dependencies
- Consider splitting large monorepos into smaller build targets
Wrong scheme or missing artifact
If the build exits successfully but no simulator.app is registered:
- Confirm the scheme builds a simulator app, not only tests or a device-only target.
- Include
-sdk iphonesimulator. - Confirm the expected product appears under Xcode DerivedData.
- Try
--scheme <SchemeName>if your config omits the scheme.
Uncommitted changes not included
The remote build usesgit archive HEAD, which only includes committed files. If your latest changes aren’t reflected in the build, make sure to commit them first.
Next Steps
Builds Overview
Manage builds and versions
iOS Simulator Builds
Build locally with Xcode
CI/CD
Automate builds in your pipeline
Need help? Contact [email protected]