0%
ذاكرة التخزين المؤقت للتبعيات والمصنوعات بين المهام

التخزين المؤقت والمصنوعات

آليتان متمايزتان، يُخلط بينهما كثيرًا، بآثار مختلفة جدًا.

10-15 دقيقة

في مشروع JavaScript متوسط الحجم، يستغرق npm ci بين ستين ومئة وعشرين ثانية. اضرب في عدد مهام سير عملك، وفي عدد الالتزامات يوميًا، وفي عدد أفراد الفريق: هذا هو أكبر إنفاق زمني في سلسلة التكامل المستمر، وهو لا يتحقق من شيء. يعيد تنزيل حزم لم تتغيّر منذ ثلاثة أسابيع في كل تشغيل.

يجيب التخزين المؤقت والمصنوعات على حاجتين يُخلط بينهما باستمرار. التخزين المؤقت (cache) يخدم عدم إعادة عمل يمكن إعادة بناء نتيجته: تبعيات مُنزَّلة، كائنات تجميع وسيطة. وهو قابل للرمي بطبيعته — إن اختفى التخزين المؤقت، تعمل السلسلة، لكن أبطأ فقط. أما المصنوع (artefact) فينقل نتيجة نريد حفظها أو تمريرها: تنفيذي مجمَّع، تقرير اختبارات، لقطة شاشة لاختبار فاشل. استخدام مصنوع كتخزين مؤقت ينتج تشغيلات بطيئة وتخزينًا ممتلئًا؛ واستخدام تخزين مؤقت لنقل ثنائي ينتج إخفاقات متقطعة، يوم يغيب التخزين المؤقت.

وضع التبعيات في التخزين المؤقت

الأبسط غالبًا هو الأفضل: إجراءات setup-* تعرف إدارة التخزين المؤقت بنفسها.

      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: npm

سطر واحد. تحدد الإجراء package-lock.json، تحسب بصمته، وتستعيد التخزين المؤقت المطابق. توجد مكافئات للنظم البيئية الأخرى: cache: pip على setup-python، وcache: maven أو cache: gradle على setup-java. ابدأ دائمًا من هنا قبل كتابة إعداد يدوي.

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!