FlowDeck CLI is designed to work seamlessly in CI/CD environments like GitHub Actions, GitLab CI, CircleCI, Bitrise, and other automation platforms.Documentation Index
Fetch the complete documentation index at: https://flowdeck.studio/docs/llms.txt
Use this file to discover all available pages before exploring further.
License Configuration
In CI environments, FlowDeck validates your license through an environment variable instead of machine activation. This approach:- Does not consume activation slots
- Works across ephemeral CI runners
- Requires no persistent storage
Setting the License Key
Set theFLOWDECK_LICENSE_KEY environment variable in your CI configuration:
Supported CI Platforms
FlowDeck automatically detects these CI environments:| Platform | Detection Variable |
|---|---|
| GitHub Actions | GITHUB_ACTIONS |
| GitLab CI | GITLAB_CI |
| CircleCI | CIRCLECI |
| Jenkins | JENKINS_URL |
| Travis CI | TRAVIS |
| Bitrise | BITRISE_IO |
| Buildkite | BUILDKITE |
| TeamCity | TEAMCITY_VERSION |
| Azure Pipelines | TF_BUILD |
| AWS CodeBuild | CODEBUILD_BUILD_ID |
| Xcode Cloud | XCODE_CLOUD |
| Codemagic | CODEMAGIC |
| Appcircle | APPCIRCLE |
| Bitbucket Pipelines | BITBUCKET_BUILD_NUMBER |
| Semaphore CI | SEMAPHORE |
| Drone CI | DRONE |
| AppVeyor | APPVEYOR |
CI=true along with your license key.
Installing FlowDeck in CI
Using the Install Script
GitHub Actions Example
Alternative: Using Config Files
Configuration File
For reproducible CI builds, use a configuration file instead of command-line arguments:Create a Config File
Create.flowdeck/ci-config.json in your repository:
Use in CI
These CI examples use the explicit
--config file format for one complete command invocation. That format is separate from the project settings files at .flowdeck/config.json and .flowdeck/config.local.json.Config File Reference
| Field | Type | Required | Description |
|---|---|---|---|
workspace | string | Yes | Path to .xcworkspace or .xcodeproj |
scheme | string | Yes | Scheme name to build |
configuration | string | No | Build configuration (Debug/Release). Default: Debug |
platform | string | No | Target platform: iOS, macOS, watchOS, tvOS, visionOS |
version | string | No | OS version (e.g., 18.0). Uses latest if not specified |
simulatorUdid | string | No | Specific simulator UDID |
derivedDataPath | string | No | Custom derived data path (default: ~/Library/Developer/FlowDeck/DerivedData) |
xcodebuild | object | No | Passthrough settings for xcodebuild |
xcodebuild.args | array | No | Arguments appended to xcodebuild |
xcodebuild.env | object | No | Environment variables for xcodebuild |
See Xcodebuild Arguments for complete passthrough options and Configuration File for all config fields.
Output Modes
JSON (Default for CI)
Use--json for machine-readable output:
Streaming (Human-Readable)
Use--streaming for clean, human-readable output in CI logs. This shows individual pass/fail results grouped by test class, with a summary at the end:
Parsing JSON Results
Simulator Management in CI
Boot a Specific Simulator
Create a Simulator (if needed)
Best Practices
1. Use Config Set or Configuration Files
For reproducibility, either useflowdeck config set or config files:
2. Choose the Right Output Mode
Use--json when you need machine-readable output for parsers or dashboards. Use --streaming when you want clean, human-readable CI logs:
3. Specify Simulator by UDID
Simulator names can vary across CI runners. Use UDIDs for consistency:4. Clean Before Release Builds
5. Use Derived Data Paths
Avoid conflicts with concurrent builds:Troubleshooting
”License validation failed”
EnsureFLOWDECK_LICENSE_KEY is set correctly:
