หน้านี้มีไว้สำหรับเจ้าของและผู้ดูแลที่เก็บกฎของ 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 RBE (Ubuntu 16.04) ใน GitHub ดังที่แสดงในรูปภาพด้านล่าง ลิงก์นี้จะพร้อมใช้งานหลังจากผสาน Pull Request และเรียกใช้การทดสอบ CI แล้ว (ดูผลลัพธ์ตัวอย่าง.)

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

การแก้ปัญหาการสร้างและการทดสอบที่ไม่สำเร็จ
หากการสร้างหรือการทดสอบไม่สำเร็จ สาเหตุอาจเป็นเพราะสิ่งต่อไปนี้
ไม่ได้ติดตั้งเครื่องมือการสร้างหรือการทดสอบที่จำเป็นในคอนเทนเนอร์เริ่มต้น การสร้างที่ใช้การกำหนดค่า
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 เพื่อดูรายละเอียดเกี่ยวกับการตั้งค่านี้