macduty

الدليل

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 من الدخول في وضع السكون:

ssh
sudo pmset -a sleep 0 disksleep 0 displaysleep 0

ثبّت Homebrew:

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

نوصي بمستخدم منفصل لتشغيل الـ Runner، حتى لا تعمل عمليات البناء أبدًا بحساب المسؤول الخاص بك:

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

سجّل الدخول بهذا المستخدم لتنفيذ الخطوات التالية.

2. تثبيت Xcode

أبسط طريقة عبر SSH هي `xcodes`:

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

اقبل الترخيص وأكمل التشغيل الأول:

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

3. تسجيل الـ Runner

في GitHub، افتح مستودعك، ثم Settings، Actions، Runners، New self-hosted runner. اختر macOS وARM64.

يعرض GitHub الأوامر الدقيقة مع الإصدار الحالي ورمز مميز (token). وتبدو كما يلي:

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>

تنتهي صلاحية الرمز المميز بعد ساعة، لذا سجّل فورًا. عندما يطلب `config.sh` التسميات (labels)، أضف تسميات ستستخدمها في مسارات العمل، مثل `xcode` أو `m4`.

4. تشغيله كخدمة

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.
بمجرد تشغيل الخدمة، هذا هو الربط بأكمله.

يبدأ الـ Runner الآن مع جلسة المستخدم. إذا كانت مهامك تشغّل اختبارات واجهة المستخدم أو تحتاج إلى سلسلة مفاتيح تسجيل الدخول، ففعّل تسجيل الدخول التلقائي لمستخدم الـ Runner في إعدادات النظام، المستخدمون والمجموعات. يمكنك فعل ذلك عبر مشاركة الشاشة. تسجيل الدخول التلقائي غير متاح ما دام FileVault مفعّلًا.

5. استخدامه في مسار عمل

.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) إيداعًا (commit). تظهر المهمة ضمن Actions وتبدأ على جهاز Mac الخاص بك خلال ثوانٍ.

6. الحفاظ على سلامته

  • المستودعات الخاصة فقط. في المستودع العام، يمكن لطلب سحب (pull request) من نسخة متفرعة (fork) أن يشغّل شيفرة على جهاز Mac الخاص بك. ينصح GitHub بعدم استخدام Runner مستضاف ذاتيًا في المستودعات العامة.
  • نظّف من حين لآخر. يتضخم DerivedData والمحاكيات القديمة مع الوقت:
ssh
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%⁩ على الأقل من الدفع الشهري

  • 16GB

    ذاكرة موحدة، ⁦120 GB/s⁩

    النوى
    10 CPU, 10 GPU
    التخزين
    متاح
    متوفر
  • الأكثر اختيارًا
    24GB

    ذاكرة موحدة، ⁦120 GB/s⁩

    النوى
    10 CPU, 10 GPU
    التخزين
    متاح
    متوفر
  • 32GB

    ذاكرة موحدة، ⁦120 GB/s⁩

    النوى
    10 CPU, 10 GPU
    التخزين
    متاح
    متوفر
Visa Mastercard تحويل ⁦SEPA⁩الأسعار بعملة ⁦EUR⁩، وتُضاف ضريبة القيمة المضافة عند الدفع حيثما تنطبق. شهر واحد كحد أدنى، ثم يمكنك الإلغاء في أي شهر.

التالي