Menu

Post image 1
Post image 2
1 / 2
0

Shipping to TestFlight Without Fastlane: Raw xcodebuild, Auto-Incrementing Builds, and One Neat Provisioning Trick

DEV Community·Todd Sullivan·20 days ago
#IeptoqbH
#ios#xcode#cicd#xcodebuild#fullscreen#archive
Reading 0:00
15s threshold

Most iOS CI tutorials reach for Fastlane. It's the default assumption. And Fastlane is fine — but it's also another Ruby toolchain to maintain, another layer of abstraction between you and xcodebuild errors, and another thing that breaks when Xcode updates. For a small side project, I wanted zero overhead. So I wrote a release script using plain xcodebuild and xcrun altool , and wired it into GitHub Actions. Here's what I learned. The Setup The app is a no-dependency iOS project (SwiftUI, SwiftData, zero SPM packages). One scheme, one target, distributes via the App Store. The goal: git push → trigger workflow → build, sign, upload to TestFlight. Auto-incrementing build numbers for free: BUILD_NUMBER = " ${ 1 :- $( git -C " $REPO_ROOT " rev-list --count HEAD ) } " Enter fullscreen mode Exit fullscreen mode That's it. Every commit bumps the count. No build number file to commit, no race conditions in CI, no manual tracking. Pass it straight into xcodebuild: xcodebuild archive \ ...…

Continue reading — create a free account

Join HashtagPLUS to read full articles, follow hashtags, vote, and join the conversation.

Read More