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

افصل الملف عن معلومات بنائه

يشمل الإصدار ملفاً أو حزمة، ورقم نسخة، ومعرف commit، ومصدر عملية البناء، وإصدار الأدوات، وبصمة SHA-256 للملف. يمكن أن يرافقها بيان منشأ يصف المنتج والخطوات والمدخلات. لا تخزن كلمات مرور أو مفاتيح توقيع أو ملفات بيئة ضمن الإيصال. اجعل الحقول المعروضة محددة، لأن بعض مخرجات البناء قد تحتوي مسارات أجهزة أو متغيرات لا ينبغي نشرها.

في النسخة الأولية، يبني GitHub Actions تطبيقاً تجريبياً ويصدر ملفاً صغيراً، ثم يحفظ بيان المنشأ مع رابط صفحة تقارن المعرفات والبصمات. يمكن للفريق كذلك توليد ملف يدوي لتعلم المخطط قبل تفعيل attestation حقيقي. ميّز بصرياً بين «بيانات توضيحية» و«إثبات موقع ومتحقق»، فلا تعرض علامة خضراء بناء على وجود JSON فقط.

ماذا يعني سجل المنشأ؟

تصف مواصفة SLSA للمنشأ بنية بيان يمكنها تسجيل موضوع البناء ومصدره والمعلمات والمواد التي اعتمد عليها. استخدم هذه الفكرة لتصميم نموذج يبين: ما artifact؟ أي مصدر قاد إلى بنائه؟ أي عملية أنتجته؟ وما المواد المسجلة؟ لا تفسر وجود هذه الحقول على أنه تحقق تلقائي من صحة كل بيان؛ يحتاج المستهلك إلى التحقق من الجهة المصدرة والسياسة المتوقعة.

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

مسار ملف العرض

افترض أن الفريق يريد عرض نسخة `demo-0.3`. ينشئ pipeline artifact من commit محدد، ويحفظ رقم التشغيل واسم الفرع ووقت البناء وإصدار runtime، ثم يحسب بصمة الملف. يفتح المشاهد صفحة «فحص الإيصال»، ويرفع الحزمة أو يختار رقم إصدار، فتقارن البصمة وتعرض الحقول المعروفة. الأسماء والمعرفات هنا مثال توضيحي لا يعود إلى مستودع أو إصدار منشور.

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

حدود كلمة «تم التحقق»

هناك درجات مختلفة: تطابق بصمة الملف يثبت أن بايتاته لم تتغير مقارنة بقيمة موثوقة؛ لكنه لا يثبت من أنتج القيمة. توقيع أو attestation موثوق يمكن أن يدعم إثبات المصدر ضمن حدود هوية الجهة المصدرة والسياسة المستخدمة. ولا يثبت أي منهما أن الشيفرة صحيحة أو أن اعتماداً خالياً من الثغرات. اعرض هذه الفروق بجانب نتيجة الفحص بدلاً من كلمة واحدة توحي بضمان مطلق.

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

خطة تجربة تقيس وضوح الإيصال

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

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

اجعل التحقق قابلاً لإعادة الفحص

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

المصادر

مراجعة المصادر: .

اختبار المثال وحدوده

معرفات الالتزام والبصمات المذكورة توضيحية وليست صادرة عن مستودع حقيقي؛ لم نبن artifact أو نتحقق من توقيع.

مقالات ذات صلة

الخدمة المرتبطة: تطوير المشاريع البرمجية الجامعية.

أرسل متطلبات مشروعك