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