إعداد Bazel CI لاختبار القواعد للتنفيذ عن بُعد

هذه الصفحة مخصّصة لمالكي ومستودعات مستودعات البازل. ويصف كيفية ضبط نظام Bazel Continuous Integration (CI) لمستودعك لاختبار قواعد التوافق مع سيناريو التنفيذ عن بُعد. تنطبق التعليمات الواردة في هذه الصفحة على المشاريع المخزّنة في مستودعات GitHub.

المتطلّبات الأساسية

قبل إكمال الخطوات الواردة في هذه الصفحة، تأكَّد مما يلي:

إعداد Bazel CI للاختبار

  1. في ملف .bazelci/presubmit.yml، نفِّذ ما يلي:

    أ- أضِف عملية ضبط باسم rbe_ubuntu1604.

    ب- في ضبط rbe_ubuntu1604، أضِف تصميم الإصدار وأهداف الاختبار التي تريد اختبارها من خلال التنفيذ عن بُعد.

  2. أضِف مستودع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")
  1. أرسِل طلب سحب يتضمّن تغييراتك إلى ملف presubmit.yml. (راجِع مثال طلب السحب).

  2. لعرض نتائج الإصدار، انقر على التفاصيل الخاصة بفحص طلب سحب RBE (Ubuntu 16.04) في GitHub، كما هو موضّح في الشكل أدناه. سيصبح هذا الرابط متاحًا بعد دمج طلب السحب وتنفيذ اختبارات CI. (الاطّلاع على أمثلة عن النتائج)

    أمثلة النتائج

  3. (اختياري) اضبط اختبار bazel test (Ubuntu 16.04) على أنه اختبار مطلوب لاجتيازه قبل دمج قاعدة حماية الفروع. يقع الإعداد في GitHub ضمن الإعدادات &gt والفروع &gt وقواعد حماية الفروع كما هو موضّح في الشكل التالي.

    إعدادات قواعد حماية الفروع

تحديد وحلّ مشاكل الإصدارات والاختبارات التي لم يتم اجتيازها

في حال تعذّر الإصدار أو الاختبارات، يرجع ذلك على الأرجح إلى ما يلي:

  • لم يتم تثبيت أدوات الإصدار أو الاختبار المطلوبة في الحاوية التلقائية. يتم تشغيل الإصدارات باستخدام تهيئة 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 من المصدر، نفِّذ ما يلي:

  1. إنشاء نسخة طبق الأصل من مستودع bazel-toolchains:

    git clone https://github.com/bazelbuild/bazel-toolchains
    
  2. يمكنك إعداد استهدافات حاويات سلاسل الأدوات وإنشاء الحاوية كما هو موضّح في حاويات Toolchain.

  3. اسحب الحاوية المصمّمة حديثًا:

    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 على النحو التالي:

  1. إنشاء صورة الحاوية:

    docker build -t custom-container-name.
    docker tag custom-container-name gcr.io/project-id/custom-container-name
    
  2. إرسال صورة الحاوية إلى سجل الحاوية:

    gcloud docker -- push gcr.io/project-id/custom-container-name
    
  3. انتقِل إلى عنوان URL التالي للتحقق من إرسال الحاوية:

    https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name

  4. دوِّن مجموع اختبار SHA256 للحاوية المخصّصة. وستحتاج إلى تقديمه لاحقًا في تعريف النظام الأساسي للإصدار.

  5. اضبط حاوية الوصول العام كما هو موضح في الوصول العلني كما هو موضح في عرض الصور بشكل علني.

    لمزيد من المعلومات، راجع إرسال الصور وسحبها.

تحديد تعريف النظام الأساسي للإصدار

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