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:
sudo pmset -a sleep 0 disksleep 0 displaysleep 0Instal Homebrew:
/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:
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`:
brew install xcodesorg/made/xcodes
xcodes install --latest
xcodes selectSetujui lisensinya dan selesaikan peluncuran pertama:
sudo xcodebuild -license accept
xcodebuild -runFirstLaunch
xcodebuild -downloadPlatform iOS3. 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:
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
./svc.sh install
./svc.sh start
./svc.sh statusRunner 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
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' buildPush 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:
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
Berikutnya