finds.dev← search

// the find

mxcl/xcodebuild

★ 352 · TypeScript · Unlicense · updated Jun 2026

A continuously resilient `xcodebuild` “GitHub Action”. Also it’s the best.

A GitHub Action that wraps xcodebuild for CI on Apple platforms, handling simulator destination selection, Xcode/Swift version matrix resolution, code signing, and sanitizer flags. It's for anyone running iOS/macOS/watchOS/tvOS CI on GitHub-hosted macOS runners who's tired of GitHub's images breaking their pipeline every time Xcode updates.

It solves the actual annoying problem of picking the right simulator destination string automatically instead of you hardcoding 'platform=iphonesimulator,os=14.5,name=iPhone 12' and having it break on the next Xcode bump. The semver-range version inputs ('^12', '~5.3') for both Xcode and Swift are a genuinely nice abstraction over GitHub's shifting image inventory. Code signing is handled end-to-end — App Store Connect API key or raw certificate/provisioning profile injection into the keychain, with automatic cleanup via a post-action. On failure it uploads the .xcresult bundle as an artifact so you get the coverage report and logs without extra config.

No Linux or Windows support, which is a real gap for a tool wrapping a cross-platform language — you're pointed to a different action or raw `swift test` instead. It's a single-maintainer project funded by sponsorship, and the README itself admits scheme/workspace auto-detection 'sometimes fails' — that's a known fragility point you'll hit on anything but a trivial project layout. The App Store Connect API key signing path explicitly warns it may misbehave on GitHub-hosted runners (devices registering as mac-NUMBER.local), so the 'it just works' pitch has an asterisk for the feature most people want. The 'continuously resilient' framing oversells it — it's really betting on GitHub's `macos-latest` staying current, which is GitHub's problem to solve, not this action's.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →