الزخارف

تتناول هذه الصفحة الزخرفة

نظرة عامة

عند منح رمز مصدر الإدخال نفسه وإعداد المنتج نفسه، يعرض نظام الإصدار المزخرف دائمًا الإخراج نفسه من خلال فصل الإصدار عن التغييرات بنظام المضيف.

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

هناك جانبان مهمان للزخارف:

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

المزايا

وفي ما يلي المزايا الرئيسية للإصدارات المزخرفة:

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

تحديد عدم التوافق

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

  • المعالجة العشوائية في ملفَين (.mk)
  • الإجراءات أو الأدوات التي تنشئ ملفات بشكل غير محدد، وعادةً ما تتضمن أرقام تعريف أو طوابع زمنية
  • برامج النظام الثنائية التي تختلف بين المضيفين (مثل برامج /usr/bin الثنائية والمسارات المطلقة وبرامج التجميع C++ للنظام التلقائي للقواعد C++ ).
  • الكتابة إلى الهيكل المصدر خلال عملية الإنشاء ويؤدي ذلك إلى منع استخدام شجرة المصدر نفسها لهدف آخر. ويكتب الإصدار الأول إلى شجرة المصدر، ما يؤدي إلى إصلاح العرض التدرّجي المصدر للمصدر "أ". قد تتعذّر محاولة إنشاء الهدف "ب".

تحديد وحلّ المشاكل في الإصدارات غير المزخرفة

بدءًا من تنفيذ الإجراء محليًا، تُظهر المشاكل التي تؤثر في نتائج ذاكرة التخزين المؤقت المحلية إجراءات غير مطابقة.

  • التأكّد من استخدام إصدارات تسلسلية فارغة: في حال تشغيل make والحصول على إصدار ناجح، يجب ألا يؤدي تشغيل الإصدار مرة أخرى إلى إعادة إنشاء أي استهدافات. وإذا نفذت كل خطوة إصدار مرّتين أو على أنظمة مختلفة، وقارنت تجزئة محتوى الملف وحصلت على نتائج مختلفة، لا يمكن إعادة إنشاء الإصدار.
  • نفِّذ خطوات تصحيح أخطاء نتائج ذاكرة التخزين المؤقت المحلية من مجموعة من أجهزة العملاء المحتملين لضمان رصد أي حالات لتسرُّب بيئة العميل إلى الإجراءات.
  • نفِّذ مبنى ضمن حاوية قاعدة إرساء لا تحتوي إلا على شجرة المصدر التي تم تسجيل الخروج منها وقائمة صريحة من أدوات المضيف. ستتسبب في إنشاء أعطال ورسائل خطأ عن تبعيات النظام الضمنية.
  • يمكنك اكتشاف مشاكل الدقة وإعادة استخدامها باستخدام قواعد التنفيذ عن بُعد.
  • تفعيل وضع الحماية الصارم على مستوى كل إجراء، بما أن الإجراءات في الإصدار يمكن أن تكون سارية وتؤثّر في البنية أو الناتج.
  • قواعد Workspace تسمح لمطوّري البرامج بإضافة تبعيات إلى مساحات العمل الخارجية، ولكنها ثرية بما يكفي للسماح بالمعالجة العشوائية في العملية. يمكنك الاطّلاع على سجلّ يتضمّن بعض الإجراءات غير المتعلّقة بالإبحار في قواعد مساحة العمل على Bazel من خلال إضافة العلامة --experimental_workspace_rules_log_file=PATH إلى أمر Bazel.

زخرفة مع Bazel

لمزيد من المعلومات عن كيفية نجاح المشاريع الأخرى باستخدام الإصدارات المزخرفة باستخدام Bazel، يمكنك الاطّلاع على محادثات BazelCon هذه: