DevOps / الأساسي: الأسس المشتركة / الدرس 4
مدخلات البناء القابلة للتكرار ومصدر الحزمة
حدد كل ما يؤثر في البناء وميز الخطوات القابلة للتكرار والبايتات المتطابقة والحزمة الموثوقة.
في هذه الصفحة
أهداف الدرس
- حدد المدخلات المؤثرة في ناتج البناء.
- ميز سلامة البايتات من المصدر الموثوق.
- نفذ ترقية لحزمة متحققا منها بإعداد منفصل.
تعريف حدود البناء
يحوّل البناء مصدرا مختارا ومدخلات معلنة إلى حزمة. تشمل المدخلات الاعتماديات والأدوات ومكتبات النظام والمعمارية والبيئة والتوليد وأحيانا الزمن أو الشبكة. قد ينتج الأمر المتكرر بايتات مختلفة إذا تحركت المدخلات. يعني التكرار إعادة بناء المدخلات المحددة مستقلا وإنتاج الناتج نفسه وفق قواعد مقارنة واضحة. وتتطلب الثقة معرفة من بنى وهل أُجيزت المدخلات. تكشف البصمة الاختلاف ولا تثبت سلامة الحزمة أو مصدرها المعلن.
تسجيل الهويات بدلا من الأسماء المتحركة
قد يتغير الفرع أو وسم الصورة أو مجال الاعتمادية مع ثبات اسمه. سجل الهويات المحلولة في بيان بناء واحفظ القفل مع المصدر. يفصل البيان الاصطناعي الأول تسمية المصدر عن هوية بناء محلولة والمعمارية. تسمياته القصيرة معرفات خيالية لا بصمات تشفير. يربط المصدر الحقيقي هويات قابلة للتحقق ببصمة الناتج. يجب إقران التثبيت بعملية تحديث مراجعة كي لا يصبح التكرار وسيلة للاحتفاظ بمدخلات ضعيفة معروفة إلى الأبد.
source_revision: lab-commit-17
lockfile_revision: lab-lock-8
toolchain: python-3.13
platform: linux-amd64
artifact_id: lab-build-42
configuration_revision: separate-from-build
يميز البيان المصدر والاعتماديات والمنصة والإعداد. يوضح حقولا للتسجيل ولا يدعي أن التسميات الخيالية تثبت بناء حقيقيا.
إزالة المدخلات البيئية العرضية
قد يضيف جهاز المطور ملفا غير متتبع أو اعتمادا مخزنا أو لغة أو منطقة زمنية أو ملفا تنفيذيا سابقا في PATH. يكشف البناء المعزول النظيف الافتراضات. صرح بالإصدارات والمعاملات وطبع بيانات التوليد عندما تسمح الصيغة وتجنب جلب محتوى متحرك أثناء الإصدار. لا تضمّن سرا لتنزيل اعتمادية خاصة. استخدم قناة اعتماد بناء قصيرة معتمدة لا تحفظه في الطبقات أو السجل. يبصم المثال الثاني بايتات محلية مضبوطة لتوضيح الهوية دون سجل حزم أو بناء فعلي.
import hashlib
a = b"release\n"
b = b"release\n"
c = b"release"
print(hashlib.sha256(a).digest() == hashlib.sha256(b).digest())
print(hashlib.sha256(a).digest() == hashlib.sha256(c).digest())
True
False
تتساوى بصمتا البايتات المضبوطة المتطابقة، ويغير حذف السطر الجديد البصمة. تستخدم المحاكاة ذاكرة اصطناعية ولا تثبت الأصالة.
معاملة الذاكرة المؤقتة كتحسين
ينبغي للمخزن تقليل العمل دون تغيير الصحة. يعكس مفتاحه القفل والأدوات والمنصة ووضع البناء، وقد يعيد مفتاح الفرع وحده حالة غير متوافقة. كما أن تسميم المخزن مسألة ثقة إذا غذته مساهمات غير موثوقة ثم استهلكته وظائف ذات امتيازات. افصل نطاقات الثقة ولا تستعد نواتج تنفيذية من مخزن غير موثوق. قارن دوريا البناء النظيف والمخزن في بيئة مصرح بها. ينبغي لفقد المخزن إبطاء العمل لا تغيير عقد التطبيق.
ترقية حزمة مراجعة واحدة
ابن مرة من مدخلات مراجعة واختبر الحزمة الناتجة ورقِّ هويتها بين البيئات. قد يدخل بناء الإنتاج المنفصل اعتمادية أو أداة جديدة رغم ثبات المصدر. أبق الإعداد الخارجي منفصلا وسجل مراجعته. احفظ الحزم في مستودع غير قابل للاستبدال مضبوط الوصول واحتفاظ يكفي للاستعادة والتحقيق. يشمل دليل الإصدار البيان والفحوص والهوية والموافقات اللازمة. وإذا أعيد البناء فعامل البايتات الجديدة مرشحا جديدا وأعد الفحوص المبررة للثقة.
الأخطاء الشائعة وإصلاحها
ينتج المصدر نفسه إصدارا مختلفا
- لماذا يحدث؟
- لم يُصرح باعتمادية أو أداة متحركة.
- كيف تصلحه؟
- قارن المدخلات المحلولة وأعد البناء من بيان مضبوط.
- كيف تتجنب تكراره؟
- سجل المنصة والقفل والأدوات والمصدر معا.
تنجح الأبنية المخزنة فقط
- لماذا يحدث؟
- يخفي المخزن اعتمادية غير معلنة.
- كيف تصلحه؟
- أعد بناء نظيفا معزولا وصرح بالمدخل الناقص.
- كيف تتجنب تكراره؟
- تحقق من الصحة مع الاستعادة من المخزن ودونها.
تُعد البصمة المتطابقة ثقة كاملة
- لماذا يحدث؟
- اختلطت السلامة بالمصدر والإذن.
- كيف تصلحه؟
- تحقق من المصدر وهويات التوقيع المعتمدة أيضا.
- كيف تتجنب تكراره؟
- حدد سياسة تحقق الحزمة قبل ترقيتها.
اختبر فهمك
1. لماذا قد لا يكفي ملف القفل لتكرار حزمة؟
اعرض الحل المشروح
قد تختلف المترجمات ومكتبات النظام والمعمارية والمعاملات والطوابع المولدة. احصرها واضبط اللازم وحدد نطاق المقارنة. رسم الاعتماديات جزء من حدود البناء وليس البيئة كلها.
2. نجح الاختبار المرحلي لكن الإنتاج يعيد البناء من الفرع نفسه. حدد الخطر والإصلاح.
اعرض الحل المشروح
قد يتحرك الفرع ومدخلات أخرى بين البناءين. رق هوية الحزمة الثابتة المتحقق منها وتتبع إعداد الإنتاج منفصلا. وإذا لزم البناء فأعط هوية جديدة وأعد التحقق ولا تستعر نتيجة سابقة.
أهم ما تعلمته
- يحوّل البناء مصدرا مختارا ومدخلات معلنة إلى حزمة.
- قد يضيف جهاز المطور ملفا غير متتبع أو اعتمادا مخزنا أو لغة أو منطقة زمنية أو ملفا تنفيذيا سابقا في PATH.
- ابن مرة من مدخلات مراجعة واختبر الحزمة الناتجة ورقِّ هويتها بين البيئات.