এই পৃষ্ঠাটি Bazel নিয়ম ভান্ডারের মালিক এবং রক্ষণাবেক্ষণকারীদের জন্য। এটি বর্ণনা করে যে কীভাবে আপনার রিপোজিটরির জন্য Bazel Continuous Integration (CI) সিস্টেম কনফিগার করবেন যাতে দূরবর্তী এক্সিকিউশন দৃশ্যের সাথে সামঞ্জস্যের জন্য আপনার নিয়মগুলি পরীক্ষা করা যায়। এই পৃষ্ঠার নির্দেশাবলী GitHub সংগ্রহস্থলে সঞ্চিত প্রকল্পগুলিতে প্রযোজ্য।
পূর্বশর্ত
এই পৃষ্ঠায় পদক্ষেপগুলি সম্পূর্ণ করার আগে, নিম্নলিখিতগুলি নিশ্চিত করুন:
- আপনার GitHub সংগ্রহস্থল Bazel GitHub সংস্থার অংশ।
- আপনি Bazel Continuous Integration এ বর্ণিত আপনার সংগ্রহস্থলের জন্য Buildkite কনফিগার করেছেন।
পরীক্ষার জন্য Bazel CI সেট আপ করা হচ্ছে
আপনার
.bazelci/presubmit.yml
ফাইলে, নিম্নলিখিতগুলি করুন:ক
rbe_ubuntu1604
নামে একটি কনফিগারেশন যোগ করুন।খ.
rbe_ubuntu1604
কনফিগারেশনে, আপনি দূরবর্তী সম্পাদনের বিরুদ্ধে পরীক্ষা করতে চান এমন বিল্ড এবং টেস্ট টার্গেট যোগ করুন।আপনার
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")
presubmit.yml
ফাইলে আপনার পরিবর্তন সহ একটি পুল অনুরোধ পাঠান। ( উদাহরণ টান অনুরোধ দেখুন।)বিল্ড ফলাফল দেখতে, নীচের চিত্রে দেখানো হিসাবে, GitHub-এ RBE (Ubuntu 16.04) পুল অনুরোধ চেকের জন্য বিস্তারিত ক্লিক করুন। পুল অনুরোধ একত্রিত হওয়ার পরে এবং CI পরীক্ষাগুলি চালানোর পরে এই লিঙ্কটি উপলব্ধ হয়৷ ( উদাহরণ ফলাফল দেখুন।)
(ঐচ্ছিক) ব্যাজেল পরীক্ষা (RBE (Ubuntu 16.04)) পরীক্ষাটি আপনার শাখা সুরক্ষা নিয়মে একত্রিত হওয়ার আগে পাস করার জন্য প্রয়োজনীয় পরীক্ষা হিসাবে সেট করুন। সেটিংটি সেটিংস > শাখা > শাখা সুরক্ষা নিয়মে গিটহাবে অবস্থিত, যেমনটি নিচের চিত্রে দেখানো হয়েছে।
বিল্ড এবং পরীক্ষায় ব্যর্থতার সমস্যা সমাধান
আপনার বিল্ড বা পরীক্ষা ব্যর্থ হলে, এটি নিম্নলিখিত কারণে হতে পারে:
প্রয়োজনীয় বিল্ড বা পরীক্ষার সরঞ্জামগুলি ডিফল্ট কন্টেইনারে ইনস্টল করা হয় না।
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
কন্টেইনার তৈরি করতে, নিম্নলিখিতগুলি করুন:
bazel-toolchains
সংগ্রহস্থল ক্লোন করুন:git clone https://github.com/bazelbuild/bazel-toolchains
টুলচেন কন্টেইনার টার্গেট সেট আপ করুন এবং টুলচেন কন্টেইনারে ব্যাখ্যা করা মত কন্টেইনার তৈরি করুন।
সদ্য নির্মিত পাত্রটি টানুন:
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
কাস্টম কন্টেইনারটিকে কনটেইনার রেজিস্ট্রিতে পুশ করা হচ্ছে
একবার আপনি কন্টেইনারটি কাস্টমাইজ করার পরে, কন্টেইনার ইমেজ তৈরি করুন এবং এটিকে কন্টেইনার রেজিস্ট্রিতে ধাক্কা দিন:
কন্টেইনার ইমেজ তৈরি করুন:
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 কে পছন্দসই হার্ডওয়্যার/সফ্টওয়্যার প্ল্যাটফর্মের জন্য উপযুক্ত একটি টুলচেইন নির্বাচন করতে দেয়। স্বয়ংক্রিয়ভাবে একটি বৈধ প্ল্যাটফর্ম তৈরি করতে, আপনি আপনার WORKSPACE
এ একটি rbe_autoconfig
টার্গেট যোগ করতে পারেন যার নাম buildkite_config
যা আপনার কাস্টম ধারক নির্বাচন করতে অতিরিক্ত attrs অন্তর্ভুক্ত করে। এই সেটআপের বিস্তারিত জানার জন্য, rbe_autoconfig
এর আপ-টু-ডেট ডকুমেন্টেশন পড়ুন।