A CircleCI orb for iOS CI/CD pipelines — reusable commands, jobs, and executors for building, testing, and deploying iOS/macOS apps.
version: 2.1
orbs:
ios: kevnm67/ios-orb@1.0.0
workflows:
build-test:
jobs:
- ios/run_with_setup:
name: test
scripts:
- run: bundle exec fastlane testmacOS executor with Xcode and Homebrew pre-configured.
| Parameter | Default | Description |
|---|---|---|
xcode_version |
26.3.0 |
Xcode version |
resource_class |
m4pro.medium |
macOS resource class |
Sets HOMEBREW_NO_AUTO_UPDATE=1 and HOMEBREW_NO_INSTALL_CLEANUP=1.
Initialize build environment: checkout, workspace, Ruby/Bundler, SPM cache.
steps:
- ios/setup:
checkout: true
bundle_install: true
persist_workspace: trueRun a Fastlane lane.
steps:
- ios/lane:
named: testInstall XcodeGen and generate the Xcode project.
steps:
- ios/xcodegen:
spec: project.yml
quiet: trueInstall Homebrew tools (only if missing).
steps:
- ios/install_tools:
tools: xcodegen swiftlint xcresultparserRun SwiftLint with optional strict mode.
steps:
- ios/swiftlint:
strict: trueSync code signing via Fastlane match. Supports multiple types in a single step.
steps:
- ios/match_signing:
type: "adhoc,appstore"
readonly: false| Parameter | Default | Description |
|---|---|---|
type |
appstore |
Comma-separated match types |
readonly |
false |
Run match in read-only mode |
app_identifier |
"" |
Bundle ID (inferred from Matchfile if empty) |
Install a Homebrew formula with optional caching.
Cache and restore Swift Package Manager dependencies.
Store build logs, diagnostics, and test results as artifacts.
Legacy — consider using qlty-orb for coverage instead.
Run tests with Code Climate coverage reporting.
Generic job: checkout → setup → run your scripts → save artifacts.
jobs:
- ios/run_with_setup:
xcode_version: "26.3.0"
scripts:
- run: bundle exec fastlane buildRun tests with Code Climate coverage (legacy).
version: 2.1
orbs:
ios: kevnm67/ios-orb@1.0.0
jobs:
setup:
executor:
name: ios/macos
steps:
- checkout
- ios/install_tools:
tools: xcodegen swiftlint
- ios/xcodegen
- run: |
bundle config set --local path vendor/bundle
bundle install
- persist_to_workspace:
root: .
paths: [.]
test:
executor:
name: ios/macos
steps:
- attach_workspace:
at: .
- ios/lane:
named: test
- ios/save_build_artifacts
lint:
executor:
name: ios/macos
steps:
- attach_workspace:
at: .
- ios/swiftlint:
strict: true
workflows:
pr:
jobs:
- setup
- test:
requires: [setup]
- lint:
requires: [setup]circleci/macos@2.5.2circleci/ruby@2.6.0
Issues and pull requests welcome.
- Merge to main using Conventional Commits
- Create a semver tag release on GitHub
- The CI pipeline publishes automatically