Rehber

Mac mini'de self-hosted GitHub Actions runner

Size özel bir Mac mini'de self-hosted GitHub Actions runner kurun. Xcode'u yükleyin, runner'ı kaydedin, servis olarak çalıştırın, build'leri hızlı ve gizli tutun.

30 dakika, güncelleme: 2026-09-15

GitHub'ın barındırdığı macOS runner'ları paylaşımlı makinelerdir. Yoğun saatlerde kuyruğa girer, her seferinde soğuk başlar ve dakika başına faturalanır.

Kendi Mac mini'nizdeki bir self-hosted runner hemen başlar, önbelleklerini build'ler arasında korur ve her ay aynı tutar.

Bu rehber yaklaşık otuz dakika sürer. İhtiyacınız olanlar:

  • Apple silicon ve SSH erişimi olan bir Mac mini
  • GitHub deposunda ya da organizasyonunda yönetici yetkisi
  • Xcode'u indirmek için bir Apple ID

1. Mac'i hazırlayın

SSH ile oturum açın ve Mac'in uyku moduna geçmesini engelleyin:

ssh
sudo pmset -a sleep 0 disksleep 0 displaysleep 0

Homebrew'u kurun:

ssh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Runner için ayrı bir kullanıcı öneririz, böylece build'ler hiçbir zaman yönetici hesabınızla çalışmaz:

ssh
sudo sysadminctl -addUser runner -fullName "CI Runner" -password -

Aşağıdaki adımlar için o kullanıcıyla oturum açın.

2. Xcode'u kurun

SSH üzerinden en basit yol `xcodes`:

ssh
brew install xcodesorg/made/xcodes
xcodes install --latest
xcodes select

Lisansı kabul edin ve ilk açılışı tamamlayın:

ssh
sudo xcodebuild -license accept
xcodebuild -runFirstLaunch
xcodebuild -downloadPlatform iOS

3. Runner'ı kaydedin

GitHub'da deponuzu açın, ardından Settings, Actions, Runners, New self-hosted runner. macOS ve ARM64'ü seçin.

GitHub, güncel sürümü ve bir token'ı içeren tam komutları gösterir. Şuna benzerler:

ssh
mkdir actions-runner && cd actions-runner
curl -o actions-runner-osx-arm64.tar.gz -L <download URL from GitHub>
tar xzf ./actions-runner-osx-arm64.tar.gz
./config.sh --url https://github.com/<owner>/<repo> --token <token>

Token bir saat sonra geçersiz olur, bu yüzden hemen kaydedin. `config.sh` etiket sorduğunda, iş akışlarında kullanacağınız etiketleri ekleyin, örneğin `xcode` ya da `m4`.

4. Servis olarak çalıştırın

ssh
./svc.sh install
./svc.sh start
./svc.sh status
GitHubYour repositoryActions queues the jobMac mini, our rackactions.runner service, launchdXcode, simulators, signing keychainIts own diskDerivedData, SwiftPM and CocoaPods caches stay warmthe runner dials out, HTTPS 443jobs and logs come back on itNothing listens on the Mac.No inbound port, no address to expose.
Servis çalışmaya başladıktan sonra bütün bağlantı bundan ibaret.

Runner artık kullanıcı oturumuyla birlikte başlar. İşleriniz UI testleri çalıştırıyorsa ya da oturum açma anahtar zincirine ihtiyaç duyuyorsa, Sistem Ayarları'nda Kullanıcılar ve Gruplar bölümünden runner kullanıcısı için otomatik oturum açmayı etkinleştirin. Bunu Ekran Paylaşma üzerinden yapabilirsiniz. FileVault açıkken otomatik oturum açma kullanılamaz.

5. Bir iş akışında kullanın

.github/workflows/ios.yml
name: iOS build

on: [push]

jobs:
  build:
    runs-on: [self-hosted, macOS, ARM64]
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: xcodebuild -scheme MyApp -destination 'generic/platform=iOS Simulator' build

Bir commit push'layın. İş, Actions altında görünür ve saniyeler içinde Mac'inizde başlar.

6. Sağlıklı tutun

  • Yalnızca özel depolar. Herkese açık bir depoda, bir fork'tan gelen pull request Mac'inizde kod çalıştırabilir. GitHub, herkese açık depolarda self-hosted runner kullanılmamasını tavsiye eder.
  • Arada bir temizlik yapın. DerivedData ve eski simülatörler zamanla büyür:
ssh
rm -rf ~/Library/Developer/Xcode/DerivedData
xcrun simctl delete unavailable
  • İmzalama. Sertifikaları ayrı bir anahtar zincirinde tutun ya da fastlane match kullanın.
  • Güncellemeler. Runner varsayılan olarak kendini günceller. Xcode'u bir sürüm çıkarmanın ortasında değil, kendi planınıza göre güncelleyin.

Neden size özel bir Mac mini

  • Üzerinde başka kimse yok. Build'ler push'ladığınız anda başlar.
  • Sıcak önbellekler. DerivedData, Swift paketleri ve CocoaPods diskte kalır, bu yüzden artımlı build'ler çok daha hızlıdır.
  • Gerçek çipler. Kullanıcılarınızın sahip olduğu Apple silicon üzerinde test edin.
  • Tek, sabit bir aylık ücret. Dakika başına faturalama yok, yoğun bir sprintin sonunda sürpriz yok.

MacDuty, M1'den M6'ya kadar Mac mini'leri AB'deki kabinlerinde, macOS kurulu olarak barındırır. SSH anahtarınızı müşteri panelinden ekleyin.

Bugün stokta

Bunlar şu anda kabinde. Birini seçin, neyle geldiğine bakın ve hesabınızı yalnızca sipariş verirken oluşturun.

Kabinler kontrol ediliyor

Size ait bir Mac mini

Bir yapılandırma seçin. Stokta yoksa e-postanızı bırakın, kabine girdiği gün size yazalım.

Yıllık: aylık ödemeye göre en az %19 daha az

  • 16GB

    Birleşik bellek, 120 GB/s

    Çekirdek
    10 CPU, 10 GPU
    Depolama
    Mevcut
    Stokta
  • En çok seçilen
    24GB

    Birleşik bellek, 120 GB/s

    Çekirdek
    10 CPU, 10 GPU
    Depolama
    Mevcut
    Stokta
  • 32GB

    Birleşik bellek, 120 GB/s

    Çekirdek
    10 CPU, 10 GPU
    Depolama
    Mevcut
    Stokta
Visa Mastercard SEPA havalesiFiyatlar EUR cinsinden; KDV, uygulandığı durumlarda ödemede eklenir. En az bir ay, sonra istediğiniz ay iptal edin.

Sıradaki