Streamlining Kotlin Multiplatform iOS CI/CD with TeamCity
How JetBrains designed an IDE-integrated pipeline for KMP developers
1iOS publishing pain points
The TeamCity integration addresses three key iOS development hurdles: expensive macOS infrastructure requirements, complex Apple signing/provisioning setup, and disjointed CI/CD workflows. Cross-platform developers often lack Mac expertise, with 10 identified steps between code completion and TestFlight deployment. The solution eliminates upfront Mac provisioning through TeamCity Cloud's hosted agents and consolidates the entire pipeline within the IDE.
2Progressive onboarding approach
The flow breaks the 10-step iOS publishing process into three tangible milestones: build/test verification, TestFlight publishing, and GitHub automation. Each stage delivers concrete value before requesting additional configuration. Design validation involved 10+ usability sessions confirming even CI/CD novices could complete the workflow. The sequencing prioritizes immediate developer wins over comprehensive upfront configuration.
3Contextual flow initiation
The plugin activates precisely when developers need CI - after their first Git push. It surfaces a 'Configure CI' tooltip directly in the IDE, eliminating documentation searches. TeamCity plugin installation becomes part of the main flow rather than a prerequisite. This timing matches the developer's mental model when they first consider CI needs, reducing activation friction.
4Transparent pipeline generation
The system generates four configuration files (teamcity.yaml, Fastfile, Appfile, Gemfile) but keeps them local and uncommitted initially. Developers review all artifacts before the first remote build executes on TeamCity's macOS agents. This lets them validate pipeline functionality before committing to version control, maintaining full visibility and control.
5Simplifying Apple signing
The solution condenses iOS publishing's most complex step into a single form capturing App Store Connect API keys, team/bundle IDs, and distribution certificates. TeamCity stores these as secure credentials rather than requiring manual certificate management. Usability testing showed this approach significantly reduced abandonment at the signing stage compared to traditional methods.
6Automation milestones
The flow celebrates two key successes: TestFlight deployment (proving the app works on real devices) and full GitHub automation (proving CI self-sufficiency). Between these points, the system suggests connecting the GitHub repository only after successful manual builds, ensuring automation activates only when the pipeline is verified functional.
7Documentation integration
The solution is now part of Kotlin Multiplatform's standard publishing guides, with a dedicated tutorial. JetBrains tracks user progression through the flow to identify drop-off points and improvement opportunities. This closed-loop approach connects product usage directly to documentation and future enhancements.
8Impact on KMP adoption
By removing macOS infrastructure requirements and CI/CD complexity, the integration significantly lowers barriers for cross-platform iOS development. The IDE-native workflow particularly benefits teams transitioning from Android-focused development to multiplatform projects, potentially accelerating KMP adoption in iOS ecosystems.
Original article: The JetBrains Blog — Streamlining Kotlin Multiplatform iOS CI/CD with TeamCity