GitHub Actions
Self-hosted runnerThe official runner supports macOS on Apple silicon and registers with the self-hosted, macOS and ARM64 labels by default.
./config.sh && ./svc.sh install
macOS CI/CD · Self-hosted runner
Turn a dedicated Mac mini into a self-hosted build node for GitHub Actions, GitLab or Jenkins. Flat monthly pricing instead of per-minute billing, no queueing, and build caches that stay on the machine so every run gets faster.
name: iOS Build
on: [push, pull_request]
jobs:
build:
# jobs are dispatched to your own Mac mini
runs-on: [self-hosted, macOS, ARM64]
steps:
- uses: actions/checkout@v4
- run: xcodebuild -scheme App test \
-destination 'platform=iOS Simulator,name=iPhone 16'
Using GitHub Actions as an example, your Mac can be running builds within minutes of delivery. Other CI platforms follow a similar flow.
It is provisioned automatically after payment and is usually ready within 15–30 minutes. Get the IP and account from the client area and sign in over SSH.
ssh macuser@<your-mac-ip>
Create a macOS runner under Settings → Actions → Runners in your repository, then download and register it with the commands shown.
./config.sh --url https://github.com/<org>/<repo> \
--token <TOKEN>
Install the runner as a service so it comes back online after a reboot, then use runs-on: self-hosted in your workflows.
./svc.sh install
./svc.sh start
With full root access you can install any build agent that runs on macOS. These are the most common.
The official runner supports macOS on Apple silicon and registers with the self-hosted, macOS and ARM64 labels by default.
./config.sh && ./svc.sh install
Install GitLab Runner with Homebrew and register it to your project or group with the shell executor, so iOS jobs call Xcode directly.
brew install gitlab-runner
Install Java, add the Mac as an SSH agent node in Jenkins and give it a macos label for iOS jobs.
brew install openjdk
Install the Buildkite Agent with Homebrew, add your agent token, and it starts picking up pipeline jobs.
brew install buildkite/buildkite/buildkite-agent
Both have strengths. The more often you build and the larger the project, the more a self-hosted Mac pays off.
Lumio self-hosted Mac
Shared cloud macOS runners
A few practical tips that save a lot of trouble.
Manage several Xcode versions with xcode-select or xcodes and set one explicitly in the pipeline, so a system update never breaks builds unexpectedly.
Keep CI certificates in a dedicated keychain and unlock it with the security command before building, or manage certificates with fastlane match.
DerivedData, old simulators and build artifacts pile up. A scheduled cleanup job keeps a full disk from failing your builds.
Run the build agent under its own system user, separate from your everyday login, for clearer permissions and better security.
Common questions before connecting a Mac to your CI.
A runner handles one job at a time. You can register several runners on the same Mac for concurrency, but Xcode builds are CPU and memory hungry, so on 16GB we usually suggest one or two iOS builds at a time.
It is not recommended. GitHub warns that pull requests to public repositories can run arbitrary code on self-hosted runners. Use self-hosted runners with private repositories, or require approval before workflows run.
Yes. Install the runner as a service the official way (svc.sh for GitHub, brew services for GitLab) and it starts and reconnects automatically on boot.
Yes. Put your own certificates and provisioning profiles in the build machine's keychain, then use fastlane or xcodebuild to sign, archive and upload to App Store Connect and TestFlight automatically.
Small teams can start with M4 Essential. Choose M4 Core (512GB) for heavy caches or several Xcode versions, and M6 for large projects where compile time is the bottleneck.
Yes. Plans are billed monthly. Order another Mac when you need more concurrency; it is ready in 15–30 minutes after payment and can be registered as a new runner right away.
A dedicated Mac mini from US$160/month, ready in 15–30 minutes after payment and running CI jobs shortly after.
View Mac plans