پیکربندی Bazel CI برای تست قوانین برای اجرای از راه دور

این صفحه برای دارندگان و نگهبانان مخازن قوانین بازل است. نحوه پیکربندی سیستم ادغام پیوسته Bazel (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. برای مشاهده نتایج ساخت، روی Details برای بررسی درخواست کشش RBE (Ubuntu 16.04) در GitHub کلیک کنید، همانطور که در شکل زیر نشان داده شده است. این پیوند پس از ادغام درخواست کشش و اجرای تست های CI در دسترس می شود. ( نمونه نتایج را ببینید.)

    Example results

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

    Branch protection rules settings

عیب یابی ساخت ها و تست های ناموفق

اگر ساخت یا آزمایشات شما با شکست مواجه شد، احتمالاً به دلیل موارد زیر است:

  • ابزارهای ساخت یا تست مورد نیاز در کانتینر پیش فرض نصب نشده اند. بیلدها با استفاده از پیکربندی 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 از منبع، موارد زیر را انجام دهید:

  1. مخزن bazel-toolchains را شبیه سازی کنید:

    git clone https://github.com/bazelbuild/bazel-toolchains
    
  2. اهداف ظرف ابزار زنجیره ای را تنظیم کنید و کانتینر را همانطور که در Toolchain Containers توضیح داده شده است بسازید.

  3. ظرف تازه ساخته شده را بکشید:

    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

هنگامی که کانتینر را سفارشی کردید، تصویر کانتینر را بسازید و به صورت زیر به رجیستری کانتینر فشار دهید:

  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 را با نام buildkite_config به WORKSPACE خود اضافه کنید که شامل attr های اضافی برای انتخاب ظرف سفارشی شما می شود. برای جزئیات بیشتر در مورد این تنظیم، اسناد به روز rbe_autoconfig را بخوانید.