Fastlane & CI/CD
Relevant source files
The following files were used as context for generating this wiki page:
Trackurr utilizes a robust automation pipeline to handle building, testing, and releasing the application. The system integrates Fastlane for delivery automation and shell scripting for environment configuration, ensuring consistency across local development and continuous integration environments.
The primary scope of the CI/CD system includes automated test execution, screenshot generation for the App Store, metadata management, and multi-tier deployment to both TestFlight and the App Store.
Sources: README.md:92-95, CLAUDE.md:27-31
Automation Framework: Fastlane
Fastlane serves as the central orchestration tool for the project's release process. It manages interactions with App Store Connect and handles the heavy lifting of building and uploading binaries.
Release Lanes
The project defines specific "lanes" to automate different stages of the release cycle:
| Lane | Action | Purpose |
|---|---|---|
beta | Build + Upload | Internal distribution to TestFlight. |
production | Build + Upload | External distribution to App Store Connect. |
screenshots | UI Testing + Capture | Generates localized App Store screenshots. |
metadata_only | Push Metadata | Updates App Store information without a new build. |
Sources: README.md:155-159, CLAUDE.md:30-31, AGENTS.md:30-31
Execution Workflow
The following diagram illustrates the flow from code change to App Store submission via Fastlane:
The diagram shows the branching paths for internal testing, full production releases, and assets management.
Sources: README.md:155-159, CLAUDE.md:27-31
Environment Configuration & Scripting
The project uses custom shell scripts to handle sensitive configuration files that are not stored directly in the main target to prevent accidental exposure or incorrect environment mapping.
Firebase Configuration Mapping
The script Scripts/copy-firebase-config.sh is responsible for injecting the correct GoogleService-Info.plist into the build bundle based on the target and bundle identifier.
# Get references to the proper version of the GoogleService-Info.plist file
GOOGLESERVICE_INFO_SOURCE_FILE=${PROJECT_DIR}/${TARGET_NAME}/Configuration/Firebase/${PRODUCT_BUNDLE_IDENTIFIER}/${GOOGLESERVICE_INFO_PLIST}
# Copy over GoogleService-Info.plist
cp "${GOOGLESERVICE_INFO_SOURCE_FILE}" "${PLIST_DESTINATION}"
Sources: Scripts/copy-firebase-config.sh:22-38
Build & Test Commands
Standard xcodebuild commands are utilized for CLI-based builds and testing, which can be easily integrated into any CI provider.
- Build:
xcodebuild -scheme Trackurr -destination 'platform=iOS Simulator,name=iPhone 15' build - Test:
xcodebuild -scheme Trackurr -destination 'platform=iOS Simulator,name=iPhone 15' test
Sources: CLAUDE.md:27-28, GEMINI.md:27-28
Automated Screenshot Generation
Trackurr employs ScreenshotTests.swift in conjunction with Fastlane Snapshot to automate the capture of localized marketing assets.
Snapshot Integration
The UI tests use a Snapshot helper to detect the device language and navigate the app accordingly. This allows the CI system to generate a full suite of screenshots across multiple languages (e.g., English, Polish) without manual intervention.
This sequence ensures that screenshots always reflect the latest UI changes and localized strings.
Sources: TrackurrUITests/ScreenshotTests.swift:15-38, README.md:155-157
UI Test Configuration
During screenshot generation, specific launch arguments are passed to the application to ensure a clean and consistent state:
-UI_TESTING: Enables UI testing mode.-SCREENSHOT_MODE: Configures the UI for photography (e.g., hiding status bar elements).-PREMIUM_USER: Unlocks all features to show premium-tier functionality.-ENABLE_ICON_INDICATORS: Enables visual markers for testing.
Sources: TrackurrUITests/ScreenshotTests.swift:30-35
Conclusion
The Fastlane and CI/CD setup in Trackurr focuses on high-frequency delivery and visual consistency. By automating everything from Firebase configuration to localized screenshot capture, the project maintains a professional release pipeline that minimizes manual error and scales with additional localizations.