تخطَّ إلى المحتوى

$/ self-repository syntax

الإشارة لنفس المستودع بصيغة $/ $/ self-repository syntax

قيمة uses تبدأ بـ $/ تشير مباشرة لـ action أو reusable workflow في نفس المستودع عند نفس الـ commit الجاري تشغيله، دون الحاجة لـ checkout مسبق كما تتطلبه صيغة ./.

قبل هذه الصيغة، الإشارة لـ action محلي في نفس المستودع كانت تحتاج uses: ./.github/actions/<اسم> مع الاعتماد على checkout سابق في نفس الـ job ليجد GitHub الملفات فعلياً على القرص، أو تثبيت مرجع خارجي (owner/repo@ref) وفقدان ميزة أن يكون الكود من نفس المستودع تلقائياً. صيغة $/ الجديدة تحل هذا: uses: $/.github/actions/<اسم> يُحل من جهة GitHub مباشرة عند نفس الـ commit الذي يعمل عليه التشغيل الحالي، بلا حاجة لأي checkout.

تعمل $/ في كل مكان تعمل فيه ./ النسبية لمساحة العمل: خطوات job عادية، خطوات composite action، التركيب المتداخل (nested composition)، واستدعاء reusable workflow عبر workflow_call. أهم فائدة عملية: إذا كان الـ caller مثبّتاً بـ commit SHA كامل (pinning)، كل مرجع $/ داخلي يتبع تلقائياً ذلك الـ SHA نفسه، فتبقى الإشارات الداخلية متزامنة مع الاستدعاء الخارجي دون أي إعداد إضافي أو خطر انجراف نسخ (version drift).

الصياغة

uses: $/<مسار داخل المستودع>

📄 مثال

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: $/.github/actions/setup-project
        with:
          node-version: "22"
      - run: npm test

# نفس الفكرة لاستدعاء reusable workflow:
# jobs:
#   call-tests:
#     uses: $/.github/workflows/reusable-test.yml

أهم النقاط

العنصرالوظيفة
$/بادئة قيمة uses تشير لجذر المستودع الحالي عند نفس الـ commit الجاري تشغيله
بلا checkoutلا حاجة لـ actions/checkout سابقة لأن الحل يتم من جهة GitHub مباشرة، لا من ملفات مستنسخة
توافق مع commit pinningمراجع $/ الداخلية تتبع تلقائياً نفس SHA المثبّت في استدعاء الـ caller الخارجي
self-hosted runnersتتطلب إصدار runner 2.336.0 أو أحدث؛ GitHub-hosted runners تدعمها تلقائياً

💡 نصائح عملية

  • استخدم $/ بدل ./ لاستدعاء actions أو reusable workflows محلية إذا لا تحتاج فعلياً checkout لأي سبب آخر في نفس الخطوة — يقلل خطوة كاملة من كل job
  • في مستودعات تُستدعى بـ commit SHA كامل من الخارج، $/ يضمن أن كل الإشارات الداخلية تبقى متطابقة مع تلك النسخة تلقائياً بلا صيانة يدوية

⚠️ أخطاء شائعة

  • توقع أن $/ تعمل على self-hosted runners بإصدار قديم من الوكيل (agent) دون تحديثه لـ 2.336.0 أو أحدث
  • الخلط بين $/ (لنفس المستودع فقط) و owner/repo@ref (لمستودع خارجي) — $/ لا تعمل مطلقاً للإشارة لمستودع آخر

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DEVOPS الكامل بالعربي.

📚 للتعمق التقني الكامل بالإنجليزية: MDN Web Docs