persist-credentials
تعطيل بقاء التوكن على الـ Runner persist-credentials
persist-credentials مدخل في actions/checkout يتحكم إن كان GITHUB_TOKEN يبقى معداً في إعدادات git على الـ runner بعد الـ checkout، ليستخدمه أي أمر git لاحق دون إعادة مصادقة.
افتراضياً (persist-credentials: true)، بعد تنفيذ actions/checkout، يبقى GITHUB_TOKEN مُعداً ضمن إعدادات git على الـ runner، فيمكن لأي خطوة لاحقة في نفس الـ job تنفيذ git push أو git commit مباشرة دون تمرير التوكن يدوياً. هذا مفيد فقط إن كانت خطوة لاحقة فعلياً تحتاج ذلك (مثل بوت ينشئ commit تلقائي)؛ في أغلب jobs (بناء، اختبار، فحص) لا حاجة إطلاقاً لهذا السلوك، ويبقى التوكن مكشوفاً بلا داعٍ لأي كود يُنفَّذ لاحقاً في نفس الـ job.
من الإصدار v7 لـ actions/checkout، أصبح التوكن (عند persist-credentials: true) يُخزَّن في ملف منفصل تحت $RUNNER_TEMP بدل داخل .git/config مباشرة، تحسيناً أمنياً إضافياً، لكن القيمة الافتراضية نفسها لم تتغير — لا يزال يُفضَّل تعطيلها صراحة إن لم تكن ضرورية.
الصياغة
- uses: actions/checkout@v7
with:
persist-credentials: false📄 مثال
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false # لا حاجة لـ push في هذا الـ job
- run: npm ci && npm testأهم النقاط
| العنصر | الوظيفة |
|---|---|
| persist-credentials: true | الافتراضي — يبقي GITHUB_TOKEN معداً على الـ runner لأوامر git لاحقة |
| persist-credentials: false | يزيل التوكن من إعدادات git بعد الـ checkout مباشرة |
| $RUNNER_TEMP (من v7) | الموقع الجديد الذي يُخزَّن فيه التوكن عند true، بدل .git/config مباشرة |
💡 نصائح عملية
- اجعل persist-credentials: false هو الخيار الافتراضي في jobs البناء والاختبار والفحص، وفعّل true فقط في job يحتاج push فعلياً
⚠️ أخطاء شائعة
- ترك persist-credentials على قيمته الافتراضية true في كل job بلا تفكير، حتى لو لم يحتج أي منها لاحقاً لأوامر git تتطلب مصادقة
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DEVOPS الكامل بالعربي.
📚 للتعمق التقني الكامل بالإنجليزية: MDN Web Docs