هذه الصفحة مخصّصة لمالكي ومستودعات مستودعات البازل. ويصف كيفية ضبط نظام Bazel Continuous Integration (CI) لمستودعك لاختبار قواعد التوافق مع سيناريو التنفيذ عن بُعد. تنطبق التعليمات الواردة في هذه الصفحة على المشاريع المخزّنة في مستودعات GitHub.
المتطلّبات الأساسية
قبل إكمال الخطوات الواردة في هذه الصفحة، تأكَّد مما يلي:
- مستودع GitHub هو جزء من مؤسسة Bajel GitHub.
- لقد ضبطت Buildkite لمستودعك كما هو موضَّح في الدمج المستمر مع Bazel.
إعداد Bazel CI للاختبار
في ملف
.bazelci/presubmit.yml
، نفِّذ ما يلي:أ- أضِف عملية ضبط باسم
rbe_ubuntu1604
.ب- في ضبط
rbe_ubuntu1604
، أضِف تصميم الإصدار وأهداف الاختبار التي تريد اختبارها من خلال التنفيذ عن بُعد.أضِف مستودع
bazel-toolchains
GitHub إلى ملفWORKSPACE
المثبَّت على أحدث إصدار. أضف أيضًا هدفrbe_autoconfig
بالاسمbuildkite_config
. في هذا المثال، يتم إنشاء إعدادات سلسلة الأدوات للتنفيذ عن بُعد باستخدام BuildKite CI للنطاقrbe_ubuntu1604
.
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
أرسِل طلب سحب يتضمّن تغييراتك إلى ملف
presubmit.yml
. (راجِع مثال طلب السحب).لعرض نتائج الإصدار، انقر على التفاصيل الخاصة بفحص طلب سحب RBE (Ubuntu 16.04) في GitHub، كما هو موضّح في الشكل أدناه. سيصبح هذا الرابط متاحًا بعد دمج طلب السحب وتنفيذ اختبارات CI. (الاطّلاع على أمثلة عن النتائج)
(اختياري) اضبط اختبار bazel test (Ubuntu 16.04) على أنه اختبار مطلوب لاجتيازه قبل دمج قاعدة حماية الفروع. يقع الإعداد في GitHub ضمن الإعدادات > والفروع > وقواعد حماية الفروع كما هو موضّح في الشكل التالي.
تحديد وحلّ مشاكل الإصدارات والاختبارات التي لم يتم اجتيازها
في حال تعذّر الإصدار أو الاختبارات، يرجع ذلك على الأرجح إلى ما يلي:
لم يتم تثبيت أدوات الإصدار أو الاختبار المطلوبة في الحاوية التلقائية. يتم تشغيل الإصدارات باستخدام تهيئة
rbe_ubuntu1604
بشكل تلقائي داخل حاويةrbe-ubuntu16-04
، والتي تتضمن أدوات مشتركة إلى العديد من إصدارات Bazel. ومع ذلك، إذا كانت قواعدك تتطلّب أدوات غير متوفّرة في الحاوية التلقائية، عليك إنشاء حاوية مخصّصة استنادًا إلى الحاويةrbe-ubuntu16-04
وتضمين تلك الأدوات كما هو موضّح لاحقًا.تستخدِم أهداف الإنشاء أو الاختبار قواعد غير متوافقة مع التنفيذ عن بُعد. اطّلِع على تكييف قواعد البازلل للتنفيذ عن بُعد للحصول على تفاصيل عن التوافق مع التنفيذ عن بُعد.
استخدام حاوية مخصّصة في إعداد rbe_ubuntu1604 CI
تكون حاوية rbe-ubuntu16-04
متاحة للجميع على عنوان URL التالي:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
ويمكنك سحبها مباشرةً من سجلّ الحاويات أو إنشاؤها من مصدر. تصف الأقسام التالية كلا الخيارين.
قبل البدء، تأكّد من تثبيت gcloud
وdocker
وgit
.
وإذا كنت بصدد إنشاء الحاوية من مصدر، عليك أيضًا تثبيت أحدث إصدار من Bazel.
سحب rbe-ubuntu16-04 من حاويات السجلّات
لسحب الحاوية rbe-ubuntu16-04
من حاويات السجلّ، شغِّل الأمر التالي:
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
استبدِل sha256-checksum بقيمة المجموع الاختباري SHA256 للحاوية الأخيرة.
إنشاء حاوية rbe-ubuntu16-04 من المصدر
لإنشاء حاوية rbe-ubuntu16-04
من المصدر، نفِّذ ما يلي:
إنشاء نسخة طبق الأصل من مستودع
bazel-toolchains
:git clone https://github.com/bazelbuild/bazel-toolchains
يمكنك إعداد استهدافات حاويات سلاسل الأدوات وإنشاء الحاوية كما هو موضّح في حاويات Toolchain.
اسحب الحاوية المصمّمة حديثًا:
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
تشغيل الحاوية المخصصة
لتنفيذ الحاوية المخصصة، يمكنك تنفيذ أحد الإجراءات التالية:
إذا سحبت الحاوية من حاويات السجلّ، شغّل الأمر التالي:
docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bash
استبدِل
sha256-checksum
بقيمة المجموع الاختباري SHA256 في الحاوية الأخيرة.إذا كنت قد أنشأت الحاوية من المصدر، يمكنك تشغيل الأمر التالي:
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
إضافة الموارد إلى الحاوية المخصصة
يمكنك استخدام Dockerfile
أو
rules_docker
لإضافة الموارد أو الإصدارات البديلة من الموارد الأصلية إلى الحاوية rbe-ubuntu16-04
.
في حال كنت حديث العهد باستخدام docker، يُرجى الاطّلاع على ما يلي:
على سبيل المثال، يؤدي مقتطف Dockerfile
التالي إلى تثبيت my_tool_package
:
FROM gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
RUN apt-get update && yes | apt-get install -y my_tool_package
إرسال الحاوية المخصصة إلى سجل الحاوية
بعد تخصيص الحاوية، أنشئ صورة الحاوية وأرسلها إلى Registry Registry على النحو التالي:
إنشاء صورة الحاوية:
docker build -t custom-container-name.
docker tag custom-container-name gcr.io/project-id/custom-container-name
إرسال صورة الحاوية إلى سجل الحاوية:
gcloud docker -- push gcr.io/project-id/custom-container-name
انتقِل إلى عنوان URL التالي للتحقق من إرسال الحاوية:
https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name
دوِّن مجموع اختبار SHA256 للحاوية المخصّصة. وستحتاج إلى تقديمه لاحقًا في تعريف النظام الأساسي للإصدار.
اضبط حاوية الوصول العام كما هو موضح في الوصول العلني كما هو موضح في عرض الصور بشكل علني.
لمزيد من المعلومات، راجع إرسال الصور وسحبها.
تحديد تعريف النظام الأساسي للإصدار
يجب تضمين إعداد منصة Bazel في إعدادات سلسلة الأدوات المخصّصة، ما يسمح لأداة Bazel باختيار سلسلة أدوات مناسبة للنظام الأساسي أو البرامج المطلوبة. لإنشاء نظام أساسي صالح تلقائيًا، يمكنك إضافة استهداف rbe_autoconfig
إلى WORKSPACE
الذي يحمل الاسم buildkite_config
والذي يتضمّن عناصر إضافية لاختيار الحاوية المخصّصة. للحصول على تفاصيل حول هذا الإعداد، اقرأ مستندات rbe_autoconfig
الحديثة.