$/ 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