Panduan

Runner GitHub Actions self-hosted di Mac mini

Siapkan runner GitHub Actions self-hosted di Mac mini dedicated. Instal Xcode, daftarkan runner, jalankan sebagai service, dan jaga build tetap cepat dan privat.

30 menit, diperbarui 2026-09-15

Runner macOS yang di-hosting GitHub adalah mesin bersama. Runner itu mengantre di jam sibuk, selalu mulai dari kondisi dingin, dan ditagih per menit.

Runner self-hosted di Mac mini Anda sendiri langsung mulai, menyimpan cache-nya di antara build, dan biayanya sama setiap bulan.

Panduan ini butuh sekitar tiga puluh menit. Anda perlu:

  • Mac mini dengan Apple silicon dan akses SSH
  • Hak admin di repositori atau organisasi GitHub
  • Apple ID, untuk mengunduh Xcode

1. Siapkan Mac

Masuk lewat SSH dan cegah Mac masuk mode tidur:

ssh
sudo pmset -a sleep 0 disksleep 0 displaysleep 0

Instal Homebrew:

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

Kami menyarankan user terpisah untuk runner, agar build tidak pernah berjalan dengan akun admin Anda:

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

Masuk sebagai user tersebut untuk langkah-langkah di bawah.

2. Instal Xcode

Cara paling sederhana lewat SSH adalah `xcodes`:

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

Setujui lisensinya dan selesaikan peluncuran pertama:

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

3. Daftarkan runner

Di GitHub, buka repositori Anda, lalu Settings, Actions, Runners, New self-hosted runner. Pilih macOS dan ARM64.

GitHub menampilkan perintah persisnya, dengan versi terbaru dan sebuah token. Bentuknya seperti ini:

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 kedaluwarsa setelah satu jam, jadi segera daftarkan. Saat `config.sh` meminta label, tambahkan label yang akan Anda pakai di workflow, seperti `xcode` atau `m4`.

4. Jalankan sebagai service

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.
Begitu service berjalan, hanya ini seluruh rangkaiannya.

Runner kini mulai bersama sesi user. Jika job Anda menjalankan tes UI atau butuh keychain login, aktifkan login otomatis untuk user runner di Pengaturan Sistem, Pengguna & Grup. Anda bisa melakukannya lewat berbagi layar. Login otomatis tidak tersedia selama FileVault aktif.

5. Pakai di workflow

.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

Push sebuah commit. Job muncul di bawah Actions dan mulai di Mac Anda dalam hitungan detik.

6. Jaga tetap sehat

  • Hanya repositori privat. Di repositori publik, pull request dari fork bisa menjalankan kode di Mac Anda. GitHub menyarankan untuk tidak memakai runner self-hosted di repositori publik.
  • Bersihkan sesekali. DerivedData dan simulator lama makin besar seiring waktu:
ssh
rm -rf ~/Library/Developer/Xcode/DerivedData
xcrun simctl delete unavailable
  • Penandatanganan. Simpan sertifikat di keychain khusus, atau pakai fastlane match.
  • Pembaruan. Secara bawaan, runner memperbarui dirinya sendiri. Perbarui Xcode sesuai jadwal Anda sendiri, bukan di tengah rilis.

Mengapa Mac mini dedicated

  • Tidak ada orang lain di sana. Build mulai begitu Anda push.
  • Cache tetap hangat. DerivedData, paket Swift, dan CocoaPods tetap di disk, sehingga build inkremental jauh lebih cepat.
  • Chip sungguhan. Uji di Apple silicon yang sama dengan milik pengguna Anda.
  • Satu harga bulanan tetap. Tanpa tagihan per menit, tanpa kejutan di akhir sprint yang sibuk.

MacDuty menempatkan Mac mini M1 hingga M6 di rak di Uni Eropa, dengan macOS terpasang. Tambahkan kunci SSH Anda dari area klien.

Tersedia hari ini

Mac ini sudah ada di rak sekarang. Pilih satu, lihat apa saja yang termasuk, dan buat akun Anda hanya saat memesan.

Memeriksa rak

Mac mini milik Anda sendiri

Pilih konfigurasi. Jika belum tersedia, tinggalkan email Anda dan kami kabari pada hari Mac itu terpasang di rak.

Tahunan: setidaknya 19% lebih murah daripada membayar bulanan

  • 16GB

    Memori terpadu, 120 GB/s

    Core
    10 CPU, 10 GPU
    Penyimpanan
    Tersedia
    Tersedia
  • Paling banyak dipilih
    24GB

    Memori terpadu, 120 GB/s

    Core
    10 CPU, 10 GPU
    Penyimpanan
    Tersedia
    Tersedia
  • 32GB

    Memori terpadu, 120 GB/s

    Core
    10 CPU, 10 GPU
    Penyimpanan
    Tersedia
    Tersedia
Visa Mastercard Transfer SEPAHarga dalam EUR, PPN ditambahkan saat pembayaran jika berlaku. Minimal satu bulan, lalu sewa bisa diakhiri di bulan mana pun.

Berikutnya