หน้านี้มีไว้สำหรับเจ้าของและผู้ดูแลที่เก็บกฎของ Bazel โดยอธิบายวิธีกำหนดค่าระบบการผสานรวมอย่างต่อเนื่อง (CI) ของ Bazel สำหรับที่เก็บเพื่อทดสอบกฎของคุณว่าเข้ากันได้กับสถานการณ์การดำเนินการระยะไกลหรือไม่ คำแนะนำในหน้านี้ใช้ได้กับโปรเจ็กต์ที่จัดเก็บไว้ในที่เก็บ GitHub
ข้อกำหนดเบื้องต้น
โปรดตรวจสอบสิ่งต่อไปนี้ก่อนทำตามขั้นตอนในหน้านี้
- ที่เก็บ GitHub เป็นส่วนหนึ่งของ องค์กร Bazel GitHub
- คุณได้กำหนดค่า Buildkite สำหรับที่เก็บตามที่อธิบายไว้ใน การผสานรวมอย่างต่อเนื่องของ Bazel
การตั้งค่า CI ของ Bazel สำหรับการทดสอบ
ในไฟล์
.bazelci/presubmit.ymlให้ทำดังนี้ก. เพิ่มการกำหนดค่าชื่อ
rbe_ubuntu1604ข. ในการกำหนดค่า
rbe_ubuntu1604ให้เพิ่มเป้าหมายบิลด์และการทดสอบที่ต้องการทดสอบกับการดำเนินการระยะไกลเพิ่มที่เก็บ GitHub
bazel-toolchainsลงในไฟล์WORKSPACEโดยปักหมุดไว้ที่ รุ่นล่าสุด นอกจากนี้ ให้เพิ่มเป้าหมายrbe_autoconfigที่มีชื่อว่าbuildkite_configตัวอย่างนี้จะสร้างการกำหนดค่า Toolchain สำหรับการดำเนินการระยะไกลด้วย BuildKite CI สำหรับrbe_ubuntu1604
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")rbe_autoconfig(name = "buildkite_config")
ส่ง Pull Request ที่มีการเปลี่ยนแปลงไปยังไฟล์
presubmit.yml(ดู ตัวอย่าง Pull Request)หากต้องการดูผลการสร้าง ให้คลิกรายละเอียด สำหรับการตรวจสอบ Pull Request RBE (Ubuntu 16.04) ใน GitHub ดังที่แสดงในรูปภาพด้านล่าง ลิงก์นี้จะพร้อมใช้งานหลังจากผสาน Pull Request และเรียกใช้การทดสอบ CI แล้ว (ดู ผลการทดสอบตัวอย่าง)

(ไม่บังคับ) ตั้งค่าการตรวจสอบ bazel test (RBE (Ubuntu 16.04)) เป็นการทดสอบที่ต้องผ่านก่อนที่จะผสานในกฎการป้องกันสาขา การตั้งค่าจะอยู่ใน GitHub ที่การตั้งค่า > สาขา > กฎการป้องกันสาขา ดังที่แสดงในรูปภาพต่อไปนี้

การแก้ปัญหาการสร้างและการทดสอบที่ไม่สำเร็จ
หากการสร้างหรือการทดสอบไม่สำเร็จ อาจเป็นเพราะสาเหตุต่อไปนี้
ไม่ได้ติดตั้งเครื่องมือการสร้างหรือการทดสอบที่จำเป็นในคอนเทนเนอร์เริ่มต้น การสร้างที่ใช้การกำหนดค่า
rbe_ubuntu1604จะทำงานภายในrbe-ubuntu16-04คอนเทนเนอร์โดยค่าเริ่มต้น ซึ่งรวมถึงเครื่องมือที่ใช้ร่วมกันในการสร้าง Bazel หลายรายการ อย่างไรก็ตาม หาก กฎของคุณต้องใช้เครื่องมือที่ไม่มีอยู่ในคอนเทนเนอร์เริ่มต้น คุณต้อง สร้างคอนเทนเนอร์ที่กำหนดเองโดยอิงตามrbe-ubuntu16-04คอนเทนเนอร์และรวมเครื่องมือเหล่านั้นตามที่อธิบายไว้ในภายหลังเป้าหมายการสร้างหรือการทดสอบใช้กฎที่ไม่เข้ากันกับการดำเนินการระยะไกล โปรดดูรายละเอียดเกี่ยวกับความเข้ากันได้กับการดำเนินการระยะไกลที่หัวข้อ การปรับกฎของ Bazel สำหรับการดำเนินการระยะไกลสำหรับ
การใช้คอนเทนเนอร์ที่กำหนดเองในการกำหนดค่า CI ของ rbe_ubuntu1604
คอนเทนเนอร์ rbe-ubuntu16-04 พร้อมให้บริการแบบสาธารณะที่ URL ต่อไปนี้
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
คุณสามารถดึงคอนเทนเนอร์นี้จาก Container Registry ได้โดยตรงหรือสร้างจากต้นทาง ส่วนถัดไปจะอธิบายทั้ง 2 ตัวเลือก
โปรดตรวจสอบว่าคุณได้ติดตั้ง 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 ด้วยค่า SHA256 checksum สำหรับ คอนเทนเนอร์ล่าสุด
การสร้างคอนเทนเนอร์ rbe-ubuntu16-04 จากต้นทาง
หากต้องการสร้างคอนเทนเนอร์ rbe-ubuntu16-04 จากต้นทาง ให้ทำดังนี้
โคลนที่เก็บ
bazel-toolchainsgit clone https://github.com/bazelbuild/bazel-toolchainsตั้งค่าเป้าหมายคอนเทนเนอร์ Toolchain และสร้างคอนเทนเนอร์ตามที่อธิบายไว้ใน คอนเทนเนอร์ Toolchain.
ดึงคอนเทนเนอร์ที่สร้างขึ้นใหม่
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ด้วยค่า SHA256 checksum สำหรับ คอนเทนเนอร์ล่าสุด.หากสร้างคอนเทนเนอร์จากต้นทาง ให้เรียกใช้คำสั่งต่อไปนี้
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
การเพิ่มทรัพยากรลงในคอนเทนเนอร์ที่กำหนดเอง
ใช้ Dockerfile หรือ
rules_docker เพื่อเพิ่มทรัพยากรหรือ
ทรัพยากรเวอร์ชันอื่นลงในคอนเทนเนอร์ rbe-ubuntu16-04
หากเพิ่งเริ่มใช้ 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
เมื่อปรับแต่งคอนเทนเนอร์แล้ว ให้สร้างอิมเมจคอนเทนเนอร์และพุชไปยัง Container Registry ดังนี้
สร้างอิมเมจคอนเทนเนอร์
docker build -t custom-container-name.docker tag custom-container-name gcr.io/project-id/custom-container-nameพุชอิมเมจคอนเทนเนอร์ไปยัง Container Registry
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 checksum ของคอนเทนเนอร์ที่กำหนดเอง คุณจะต้องระบุค่านี้ในการกำหนดแพลตฟอร์มบิลด์ในภายหลัง
กำหนดค่าคอนเทนเนอร์สำหรับการเข้าถึงแบบสาธารณะตามที่อธิบายไว้ในหัวข้อการเข้าถึงแบบสาธารณะ ตามที่อธิบายไว้ใน การแสดงอิมเมจแบบสาธารณะ
ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ การพุชและการดึงอิมเมจ
การระบุคำจำกัดความของแพลตฟอร์มบิลด์
คุณต้องรวมการกำหนดค่า แพลตฟอร์ม Bazel ไว้ในการกำหนดค่า Toolchain ที่กำหนดเอง
ซึ่งจะช่วยให้ Bazel เลือก Toolchain ที่เหมาะสมกับแพลตฟอร์มฮาร์ดแวร์/ซอฟต์แวร์ที่ต้องการได้ หากต้องการสร้าง
แพลตฟอร์มที่ถูกต้องโดยอัตโนมัติ คุณสามารถเพิ่มเป้าหมาย
rbe_autoconfig ที่มีชื่อว่า buildkite_config ลงใน WORKSPACE ซึ่งรวมถึงแอตทริบิวต์เพิ่มเติม
เพื่อเลือกคอนเทนเนอร์ที่กำหนดเอง โปรดอ่านเอกสารประกอบล่าสุดสำหรับ rbe_autoconfig เพื่อดูรายละเอียดเกี่ยวกับการตั้งค่านี้