الدليل
Runner مستضاف ذاتيًا لـ GitHub Actions على Mac mini
أعدّ Runner مستضافًا ذاتيًا لـ GitHub Actions على Mac mini مخصص. ثبّت Xcode، وسجّل الـ Runner، وشغّله كخدمة، وحافظ على سرعة عمليات البناء (build) وخصوصيتها.
وقت القراءة: 30 د، آخر تحديث 2026-09-15
أجهزة Runner بنظام macOS التي يستضيفها GitHub أجهزة مشتركة. تصطف المهام فيها في الانتظار في أوقات الذروة، وتبدأ من الصفر في كل مرة، وتُحاسَب بالدقيقة.
أما الـ Runner المستضاف ذاتيًا على Mac mini خاص بك فيبدأ فورًا، ويحتفظ بذاكرته المؤقتة بين عمليات البناء، وكلفته ثابتة كل شهر.
يستغرق هذا الدليل نحو ثلاثين دقيقة. تحتاج إلى:
- Mac mini بشريحة Apple silicon مع وصول عبر SSH
- صلاحيات المسؤول على مستودع GitHub أو المؤسسة
- حساب Apple ID لتنزيل Xcode
1. تجهيز جهاز Mac
سجّل الدخول عبر SSH وامنع جهاز Mac من الدخول في وضع السكون:
sudo pmset -a sleep 0 disksleep 0 displaysleep 0ثبّت Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"نوصي بمستخدم منفصل لتشغيل الـ Runner، حتى لا تعمل عمليات البناء أبدًا بحساب المسؤول الخاص بك:
sudo sysadminctl -addUser runner -fullName "CI Runner" -password -سجّل الدخول بهذا المستخدم لتنفيذ الخطوات التالية.
2. تثبيت Xcode
أبسط طريقة عبر SSH هي `xcodes`:
brew install xcodesorg/made/xcodes
xcodes install --latest
xcodes selectاقبل الترخيص وأكمل التشغيل الأول:
sudo xcodebuild -license accept
xcodebuild -runFirstLaunch
xcodebuild -downloadPlatform iOS3. تسجيل الـ Runner
في GitHub، افتح مستودعك، ثم Settings، Actions، Runners، New self-hosted runner. اختر macOS وARM64.
يعرض GitHub الأوامر الدقيقة مع الإصدار الحالي ورمز مميز (token). وتبدو كما يلي:
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>تنتهي صلاحية الرمز المميز بعد ساعة، لذا سجّل فورًا. عندما يطلب `config.sh` التسميات (labels)، أضف تسميات ستستخدمها في مسارات العمل، مثل `xcode` أو `m4`.
4. تشغيله كخدمة
./svc.sh install
./svc.sh start
./svc.sh statusيبدأ الـ Runner الآن مع جلسة المستخدم. إذا كانت مهامك تشغّل اختبارات واجهة المستخدم أو تحتاج إلى سلسلة مفاتيح تسجيل الدخول، ففعّل تسجيل الدخول التلقائي لمستخدم الـ Runner في إعدادات النظام، المستخدمون والمجموعات. يمكنك فعل ذلك عبر مشاركة الشاشة. تسجيل الدخول التلقائي غير متاح ما دام FileVault مفعّلًا.
5. استخدامه في مسار عمل
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) إيداعًا (commit). تظهر المهمة ضمن Actions وتبدأ على جهاز Mac الخاص بك خلال ثوانٍ.
6. الحفاظ على سلامته
- المستودعات الخاصة فقط. في المستودع العام، يمكن لطلب سحب (pull request) من نسخة متفرعة (fork) أن يشغّل شيفرة على جهاز Mac الخاص بك. ينصح GitHub بعدم استخدام Runner مستضاف ذاتيًا في المستودعات العامة.
- نظّف من حين لآخر. يتضخم DerivedData والمحاكيات القديمة مع الوقت:
rm -rf ~/Library/Developer/Xcode/DerivedData
xcrun simctl delete unavailable- التوقيع. احفظ الشهادات في سلسلة مفاتيح مخصصة، أو استخدم fastlane match.
- التحديثات. يُحدّث الـ Runner نفسه افتراضيًا. حدّث Xcode وفق جدولك أنت، لا في منتصف إصدار.
لماذا Mac mini مخصص
- لا أحد غيرك عليه. تبدأ عمليات البناء لحظة الدفع (push).
- ذاكرة مؤقتة جاهزة. يبقى DerivedData وحزم Swift وCocoaPods على القرص، فتصبح عمليات البناء التزايدية أسرع بكثير.
- شرائح حقيقية. اختبر على شريحة Apple silicon نفسها التي لدى مستخدميك.
- سعر شهري ثابت. لا فوترة بالدقيقة، ولا مفاجآت في نهاية دورة عمل (sprint) مزدحمة.
تضع MacDuty أجهزة Mac mini من M1 إلى M6 في خزائن الخوادم في الاتحاد الأوروبي، ومثبّت عليها macOS. أضف مفتاح SSH الخاص بك من منطقة العملاء.
متوفر اليوم
هذه الأجهزة في الخزانة الآن. اختر واحدًا، واطّلع على ما يأتي معه، ولا تُنشئ حسابك إلا عند الطلب.
جارٍ التحقق من الخزائن
جهاز Mac mini خاص بك
اختر تكوينًا. وإن لم يكن متوفرًا، اترك بريدك الإلكتروني ونراسلك يوم تركيبه في الخزانة.
سنويًا: أقل بنسبة 19% على الأقل من الدفع الشهري
التالي