محتويات الدورة

GitHub Actions / المشاركة والسلطة المحدودة / الدرس 7

مفاتيح الذاكرة ومسارات الاستعادة وسلامة الاعتماد

سرّع الحصول على الاعتمادات مع صحة ثابتة عند غياب الذاكرة.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • مراجعة التطابق الدقيق والبديل.
  • فصل هوية الذاكرة والاعتماد والناتج.

اختر محتوى الذاكرة

تهدف ذاكرة Actions إلى تقليل العمل المتكرر مثل تنزيل الاعتمادات. ابدأ بتحديد محتوى المجلد: هل هو تنزيلات متحقق منها، أم أجسام مترجمة، أم بيئة افتراضية، أم ناتج تطبيق مولد؟ تختلف متطلبات التوافق والثقة بين هذه الحالات. يبقى ملف اعتماد Parcel المراجع هو المرجع حتى بعد استعادة ذاكرة قديمة. ينبغي لغياب الذاكرة أن يبطئ الحصول أو ينتج خطأ شبكة واضحاً، لا أن يختار إصدارات مختلفة بصمت. لا تضع بيانات اعتماد فيها ولا تجعلها النسخة الوحيدة من حزمة إصدار يحتاجها التعافي.

افهم المستعاد لا المطلوب فقط

تبحث آلية الذاكرة أولاً عن مفتاح مطابق وفق نطاقها وسلوك نسختها الموثقين، ثم قد تلجأ إلى تطابق جزئي أو restore-keys. يميز مخرج الإصابة الدقيقة التطابق التام عن بقية حالات الاستعادة، لكنه لا يقرر صحة الاعتمادات. قد يزوّد البديل المدير بتنزيلات قديمة مفيدة إذا تحقق بعد ذلك من متطلبات القفل الحالي. تختلف استعادة بيئة تنفيذ كاملة بمفتاح واسع، لأن ملفات متقادمة قد تبقى فعالة حتى عندما ينجح المثبت. راجع ما استُعيد فعلاً ولا تكتف بمعرفة المفتاح الذي طلبته المهمة.

ضمّن أبعاد التوافق المؤثرة

يتضمن المفتاح المفيد عادة نظام التشغيل ومحتوى ملف القفل، وقد يحتاج هوية أداة أو صيغة ذاكرة عندما تؤثر في التوافق. وتهم المعمارية حين يحوي المحتوى نواتج أصلية مترجمة. تستطيع أسماء الفروع فصل الاستخدام لكنها لا تصف توافق البايتات. يوضح البرنامج الكامل مفتاحاً يتغير مع الاعتماد أو المعمارية. التجزئة المختصرة مفتاح تعليمي قابل للقراءة وليست فحص سلامة للحزم نفسها. يجب أن تستخدم خطوة الحصول الحقيقية آلية التحقق التي يدعمها مدير الحزم، حتى لو عثرت على ذاكرة تبدو مناسبة.

python ثلاثة أبعاد لاختيار الذاكرة
import hashlib
def cache_key(os_name, architecture, lock):
    return f"{os_name}-{architecture}-" + hashlib.sha256(lock.encode()).hexdigest()[:10]
first = cache_key("linux", "x64", "parcel-format=3")
print(first == cache_key("linux", "x64", "parcel-format=3"))
print(first == cache_key("linux", "arm64", "parcel-format=3"))
print(first == cache_key("linux", "x64", "parcel-format=4"))
الناتج المتوقع
True
False
False

لا يحفظ البرنامج ذاكرة ولا يستعيدها. راجع نسخة Actions ونطاق الفرع والأرشفة وتوافق الإجراء في المرجع.

راجع الكتّاب والمستهلك قليل الثقة

يعتمد الوصول إلى الذاكرة على الحدث والمرجع وسياسة المستودع والحماية الحالية في المنصة. لا تفترض أن غموض اسم المفتاح يجعله خاصاً. ينبغي ألا تستطيع مهمة غير موثوقة تمرير حالة تنفيذية إلى ترقية مميزة دون تصميم ثقة مناسب. راجع القيود الحالية للأحداث قليلة الثقة وأي سياسة وصول للذاكرة بدلاً من الاتكال على افتراضات محفوظة. أبعد سلطة الإصدار عن مهام فحص الاعتماد حيث يمكن. يصف التقسيم التالي هدفاً للثقة، ولا يدعي أن مجرد فصل الأسماء يفرض عزل الوصول أو يمنع تسميم المحتوى.

text أهداف ثقة الذاكرة
proposal path: unprivileged dependency validation
trusted path: reviewed inputs and verified acquisition
release package: retained by explicit candidate identity

لا تفرض الأسماء وحدها الوصول. تحدد الخدمة والسياسة ونموذج العامل والتنفيذ المحتوى العابر للحدود.

قس الاستعادة وافحص المسار البارد

قس زمن الاستعادة والحصول على الاعتماد والحفظ والزمن الكلي للمهمة كلّاً على حدة. قد يستغرق نقل أرشيف ضخم أكثر من تنزيل المحتوى المطلوب مباشرة. لا تفيد نسبة إصابة عالية إلا إذا تحسنت سرعة التغذية الراجعة فعلاً. افحص المسار بلا ذاكرة دورياً في مختبر مصرح لكشف المدخلات غير المعلنة. وعند غياب ملف، ميّز مشكلة اكتساب اعتماد من غياب ناتج مهمة منتجة قبل حذف الذاكرة. قد يخفي الحذف الشامل تسابقاً مؤقتاً دون تفسيره، ويزيد الحمل على مصادر الاعتمادات في الوقت نفسه.

الأخطاء الشائعة وإصلاحها

تُعد cache-hit تحقق اعتماد.

لماذا يحدث؟
اختلط نجاح الاختيار بالسلامة.
كيف تصلحه؟
نفذ الحصول المقفل والفحوص المدعومة.
كيف تتجنب تكراره؟
أبق سياسة الاعتماد حاكمة بعد الاستعادة.

تنتقل بيئة أصلية بين x64 وarm64.

لماذا يحدث؟
غاب بُعد المعمارية أو توافق ثنائي.
كيف تصلحه؟
افصل وفق العقد المؤثر.
كيف تتجنب تكراره؟
وثق هل المحتوى مصدر محمول أو تنفيذي.

يعمل الإصدار فقط بذاكرة سابقة.

لماذا يحدث؟
اختبأ الناتج المطلوب في تسريع مؤقت.
كيف تصلحه؟
أنتج وانقل الناتج صراحة.
كيف تتجنب تكراره؟
افحص البارد واحفظ المرشحين منفصلين.

اختبر فهمك

1. استعاد البديل تنزيلات الأسبوع الماضي. هل يرفضها كلها؟

اعرض الحل المشروح

ليس بالضرورة. إن كانت ثابتة ويتحقق المدير وفق القفل المراجع يعيد استعمال المفيد ويجلب الناقص. تحتاج بيئة التنفيذ القديمة تقييماً أشد.

2. يوفر عشرين ثانية ويضيف أربعين نقل. ماذا تحسن؟

اعرض الحل المشروح

قس عينة وقلص المحتوى أو أزل الذاكرة إن أبطأت المسار. فضّل حصولاً واضحاً على إصابة عالية بتغذية أسوأ، وأبق الصحة مستقلة عن التحسين.

أهم ما تعلمته

  • لا يتحقق اختيار الذاكرة من الاعتماد.
  • راجع التوافق والكتابة والسلامة والبارد معاً.

المراجع الرسمية