Bazel CI কনফিগার করা হচ্ছে রিমোট এক্সিকিউশনের জন্য নিয়ম পরীক্ষা করার জন্য

এই পৃষ্ঠাটি Bazel নিয়ম ভান্ডারের মালিক এবং রক্ষণাবেক্ষণকারীদের জন্য। এটি বর্ণনা করে যে কীভাবে আপনার রিপোজিটরির জন্য Bazel Continuous Integration (CI) সিস্টেম কনফিগার করবেন যাতে দূরবর্তী এক্সিকিউশন দৃশ্যের সাথে সামঞ্জস্যের জন্য আপনার নিয়মগুলি পরীক্ষা করা যায়। এই পৃষ্ঠার নির্দেশাবলী GitHub সংগ্রহস্থলে সঞ্চিত প্রকল্পগুলিতে প্রযোজ্য।

পূর্বশর্ত

এই পৃষ্ঠায় পদক্ষেপগুলি সম্পূর্ণ করার আগে, নিম্নলিখিতগুলি নিশ্চিত করুন:

পরীক্ষার জন্য Bazel CI সেট আপ করা হচ্ছে

  1. আপনার .bazelci/presubmit.yml ফাইলে, নিম্নলিখিতগুলি করুন:

    rbe_ubuntu1604 নামে একটি কনফিগারেশন যোগ করুন।

    খ. rbe_ubuntu1604 কনফিগারেশনে, আপনি দূরবর্তী সম্পাদনের বিরুদ্ধে পরীক্ষা করতে চান এমন বিল্ড এবং টেস্ট টার্গেট যোগ করুন।

  2. আপনার WORKSPACE bazel-toolchains GitHub সংগ্রহস্থল যোগ করুন, সর্বশেষ রিলিজে পিন করা। এছাড়াও buildkite_config নামের সাথে একটি rbe_autoconfig লক্ষ্য যোগ করুন। এই উদাহরণটি rbe_ubuntu1604-এর জন্য rbe_ubuntu1604 CI-এর সাথে রিমোট এক্সিকিউশনের জন্য টুলচেন কনফিগারেশন তৈরি করে।

load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
  1. presubmit.yml ফাইলে আপনার পরিবর্তন সহ একটি পুল অনুরোধ পাঠান। ( উদাহরণ টান অনুরোধ দেখুন।)

  2. বিল্ড ফলাফল দেখতে, নীচের চিত্রে দেখানো হিসাবে, GitHub-এ RBE (Ubuntu 16.04) পুল অনুরোধ চেকের জন্য বিস্তারিত ক্লিক করুন। পুল অনুরোধ একত্রিত হওয়ার পরে এবং CI পরীক্ষাগুলি চালানোর পরে এই লিঙ্কটি উপলব্ধ হয়৷ ( উদাহরণ ফলাফল দেখুন।)

    Example results

  3. (ঐচ্ছিক) ব্যাজেল পরীক্ষা (RBE (Ubuntu 16.04)) পরীক্ষাটি আপনার শাখা সুরক্ষা নিয়মে একত্রিত হওয়ার আগে পাস করার জন্য প্রয়োজনীয় পরীক্ষা হিসাবে সেট করুন। সেটিংটি সেটিংস > শাখা > শাখা সুরক্ষা নিয়মে গিটহাবে অবস্থিত, যেমনটি নিচের চিত্রে দেখানো হয়েছে।

    Branch protection rules settings

বিল্ড এবং পরীক্ষায় ব্যর্থতার সমস্যা সমাধান

আপনার বিল্ড বা পরীক্ষা ব্যর্থ হলে, এটি নিম্নলিখিত কারণে হতে পারে:

  • প্রয়োজনীয় বিল্ড বা পরীক্ষার সরঞ্জামগুলি ডিফল্ট কন্টেইনারে ইনস্টল করা হয় না। 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 চেকসাম মান দিয়ে sha256- sha256-checksum প্রতিস্থাপন করুন।

উৎস থেকে rbe-ubuntu16-04 কন্টেইনার তৈরি করা

উৎস থেকে rbe-ubuntu16-04 কন্টেইনার তৈরি করতে, নিম্নলিখিতগুলি করুন:

  1. bazel-toolchains সংগ্রহস্থল ক্লোন করুন:

    git clone https://github.com/bazelbuild/bazel-toolchains
    
  2. টুলচেন কন্টেইনার টার্গেট সেট আপ করুন এবং টুলচেন কন্টেইনারে ব্যাখ্যা করা মত কন্টেইনার তৈরি করুন।

  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 চেকসাম মান দিয়ে sha256- sha256-checksum প্রতিস্থাপন করুন।

  • আপনি যদি উৎস থেকে ধারকটি তৈরি করেন তবে নিম্নলিখিত কমান্ডটি চালান:

    docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
    

কাস্টম কন্টেইনারে সংস্থান যোগ করা হচ্ছে

rbe-ubuntu16-04 কন্টেইনারে রিসোর্স বা মূল রিসোর্সের বিকল্প সংস্করণ যোগ করতে একটি Dockerfile বা rules_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

কাস্টম কন্টেইনারটিকে কনটেইনার রেজিস্ট্রিতে পুশ করা হচ্ছে

একবার আপনি কন্টেইনারটি কাস্টমাইজ করার পরে, কন্টেইনার ইমেজ তৈরি করুন এবং এটিকে কন্টেইনার রেজিস্ট্রিতে ধাক্কা দিন:

  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 কে পছন্দসই হার্ডওয়্যার/সফ্টওয়্যার প্ল্যাটফর্মের জন্য উপযুক্ত একটি টুলচেইন নির্বাচন করতে দেয়। স্বয়ংক্রিয়ভাবে একটি বৈধ প্ল্যাটফর্ম তৈরি করতে, আপনি আপনার WORKSPACE এ একটি rbe_autoconfig টার্গেট যোগ করতে পারেন যার নাম buildkite_config যা আপনার কাস্টম ধারক নির্বাচন করতে অতিরিক্ত attrs অন্তর্ভুক্ত করে। এই সেটআপের বিস্তারিত জানার জন্য, rbe_autoconfig এর আপ-টু-ডেট ডকুমেন্টেশন পড়ুন।