actions/cache
التخزين المؤقت للتبعيات actions/cache
actions/cache يخزّن مجلداً بمفتاح محدد ويسترجعه في التشغيلات القادمة، فيوفّر وقت تنزيل التبعيات المتكرر في كل تشغيلة.
الفكرة بسيطة: تعطي actions/cache مساراً (path) ومفتاحاً (key)، وهو يحفظ محتوى ذلك المسار مضغوطاً على خوادم GitHub. في التشغيلة التالية، إذا طابق المفتاح المحسوب مفتاحاً محفوظاً سابقاً، يُستعاد المحتوى مباشرة بدل إعادة تنزيله من الصفر. بناء المفتاح من hashFiles() على ملف القفل (lock file) يضمن أن أي تغيير فعلي بالتبعيات يولّد مفتاحاً جديداً ويعيد بناء الكاش تلقائياً.
عند عدم وجود مطابقة تامة، تُجرَّب restore-keys بالترتيب لإيجاد أقرب كاش سابق (partial match) بدل البدء من الصفر بالكامل. لا حاجة لخطوة حفظ منفصلة: إذا نجح الـ job، يُنشأ الكاش الجديد تلقائياً في نهاية التشغيلة.
الصياغة
- uses: actions/cache@v4
with:
path: <مسار المجلد>
key: <مفتاح فريد>
restore-keys: |
<مفتاح احتياطي>📄 مثال
- name: Cache pip packages
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: pip install -r requirements.txtأهم النقاط
| العنصر | الوظيفة |
|---|---|
| key | المفتاح المطلوب مطابقته تماماً لاسترجاع كاش موجود؛ يُبنى عادة من hashFiles() على ملف القفل |
| path | المسار أو المسارات المراد تخزينها؛ يدعم أنماط glob |
| restore-keys | مفاتيح احتياطية تُجرَّب بالترتيب عند عدم وجود مطابقة تامة لـ key |
| cache-hit | مُخرَج (output) بقيمة true/false يمكن قراءته بخطوات لاحقة لمعرفة هل حدثت مطابقة تامة |
💡 نصائح عملية
- setup-node وsetup-python وsetup-java وsetup-go تدعم تخزيناً مؤقتاً مدمجاً بخيار cache: 'npm' واحد بدل كتابة actions/cache يدوياً
- اربط المفتاح بملف القفل (package-lock.json، requirements.txt...) لا بمجرد اسم ثابت — وإلا لن يتجدد الكاش أبداً عند تغيّر التبعيات
⚠️ أخطاء شائعة
- استخدام مفتاح ثابت بلا hashFiles() يجعل الكاش يخدم تبعيات قديمة حتى بعد تغييرها فعلياً
- الاعتماد على الكاش لبيانات حساسة أو أسرار — الكاش مخصص لتسريع البناء فقط وليس بديلاً آمناً لإدارة الأسرار
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DEVOPS الكامل بالعربي.
📚 للتعمق التقني الكامل بالإنجليزية: MDN Web Docs