این صفحه برای دارندگان و نگهبانان مخازن قوانین بازل است. نحوه پیکربندی سیستم ادغام پیوسته Bazel (CI) را برای مخزن خود توضیح می دهد تا قوانین شما را برای سازگاری در برابر یک سناریوی اجرای از راه دور آزمایش کند. دستورالعمل های این صفحه برای پروژه های ذخیره شده در مخازن GitHub اعمال می شود.
پیش نیازها
قبل از انجام مراحل در این صفحه، از موارد زیر اطمینان حاصل کنید:
- مخزن GitHub شما بخشی از سازمان Bazel GitHub است .
- همانطور که در Bazel Continuous Integration توضیح داده شده است، Buildkite را برای مخزن خود پیکربندی کرده اید.
راه اندازی Bazel CI برای آزمایش
در فایل
.bazelci/presubmit.ymlخود، موارد زیر را انجام دهید:آ. یک پیکربندی به نام
rbe_ubuntu1604کنید.ب در پیکربندی
rbe_ubuntu1604، اهداف ساخت و آزمایشی را که میخواهید در برابر اجرای از راه دور آزمایش کنید، اضافه کنید.مخزن
bazel-toolchainsGitHub را به فایل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ارسال کنید. (به مثال درخواست کشش مراجعه کنید.)برای مشاهده نتایج ساخت، روی Details برای بررسی درخواست کشش RBE (Ubuntu 16.04) در GitHub کلیک کنید، همانطور که در شکل زیر نشان داده شده است. این پیوند پس از ادغام درخواست کشش و اجرای تست های CI در دسترس می شود. ( نمونه نتایج را ببینید.)

(اختیاری) تست بازل (RBE (Ubuntu 16.04)) را بهعنوان آزمونی که قبل از ادغام در قانون حفاظت از شعبهتان لازم است، تنظیم کنید. تنظیمات در GitHub در Settings > Branches > Branch protection rules قرار دارد، همانطور که در شکل زیر نشان داده شده است.

عیب یابی ساخت ها و تست های ناموفق
اگر ساخت یا آزمایشات شما با شکست مواجه شد، احتمالاً به دلیل موارد زیر است:
ابزارهای ساخت یا تست مورد نیاز در کانتینر پیش فرض نصب نشده اند. بیلدها با استفاده از پیکربندی
rbe_ubuntu1604به طور پیشفرض در داخل یک ظرفrbe-ubuntu16-04که شامل ابزارهای رایج در بسیاری از بیلدهای Bazel است. با این حال، اگر قوانین شما به ابزارهایی نیاز دارند که در کانتینر پیشفرض وجود ندارند، باید یک کانتینر سفارشی بر اساس ظرفrbe-ubuntu16-04کنید و آن ابزارها را همانطور که بعدا توضیح داده شد، اضافه کنید.اهداف ساخت یا آزمایش از قوانینی استفاده می کنند که با اجرای از راه دور ناسازگار هستند. برای جزئیات بیشتر در مورد سازگاری با اجرای از راه دور، به تطبیق قوانین Bazel برای اجرای از راه دور مراجعه کنید.
استفاده از یک کانتینر سفارشی در پیکربندی rbe_ubuntu1604 CI
ظرف rbe-ubuntu16-04 به صورت عمومی در URL زیر در دسترس است:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
می توانید آن را مستقیماً از Container Registry بکشید یا از منبع بسازید. بخش های بعدی هر دو گزینه را توضیح می دهند.
قبل از شروع، مطمئن شوید که gcloud ، docker و git را نصب کرده اید. اگر کانتینر را از منبع میسازید، باید آخرین نسخه Bazel را نیز نصب کنید.
کشیدن rbe-ubuntu16-04 از Container Registry
برای بیرون کشیدن rbe-ubuntu16-04 از Container Registry، دستور زیر را اجرا کنید:
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
sha256-checksum را با مقدار checksum SHA256 برای آخرین کانتینر جایگزین کنید.
ساخت ظرف rbe-ubuntu16-04 از منبع
برای ساختن rbe-ubuntu16-04 از منبع، موارد زیر را انجام دهید:
مخزن
bazel-toolchainsرا شبیه سازی کنید:git clone https://github.com/bazelbuild/bazel-toolchainsاهداف ظرف ابزار زنجیره ای را تنظیم کنید و کانتینر را همانطور که در Toolchain Containers توضیح داده شده است بسازید.
ظرف تازه ساخته شده را بکشید:
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
اجرای کانتینر سفارشی
برای اجرای کانتینر سفارشی، یکی از موارد زیر را انجام دهید:
اگر کانتینر را از Container Registry بیرون کشیدید، دستور زیر را اجرا کنید:
docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bashsha256-checksumرا با مقدار checksum SHA256 برای آخرین کانتینر جایگزین کنید.اگر کانتینر را از منبع ساخته اید، دستور زیر را اجرا کنید:
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
افزودن منابع به ظرف سفارشی
برای افزودن منابع یا نسخه های جایگزین منابع اصلی به ظرف rbe-ubuntu16-04 از یک Dockerfile یا rules_docker استفاده کنید. اگر تازه وارد 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
فشار دادن کانتینر سفارشی به Container 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 را با نام buildkite_config به WORKSPACE خود اضافه کنید که شامل attr های اضافی برای انتخاب ظرف سفارشی شما می شود. برای جزئیات بیشتر در مورد این تنظیم، اسناد به روز rbe_autoconfig را بخوانید.