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:
For other CI systems, set
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
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:
