หน้านี้มีไว้สำหรับเจ้าของและผู้ดูแลที่เก็บกฎของ Bazel โดยจะอธิบายวิธีกำหนดค่าระบบการรวมอย่างต่อเนื่อง (CI) ของ Bazel สำหรับที่เก็บข้อมูลเพื่อทดสอบกฎของคุณว่าเข้ากันได้กับสถานการณ์การดำเนินการระยะไกลหรือไม่ วิธีการในหน้านี้ใช้กับโปรเจ็กต์ที่จัดเก็บไว้ในที่เก็บ GitHub
ข้อกำหนดเบื้องต้น
ก่อนทำตามขั้นตอนในหน้านี้ โปรดตรวจสอบว่าคุณมีสิ่งต่อไปนี้
- ที่เก็บ GitHub ของคุณเป็นส่วนหนึ่งขององค์กร Bazel GitHub
- คุณได้กำหนดค่า Buildkite สำหรับที่เก็บข้อมูลตามที่อธิบายไว้ใน การผสานรวมอย่างต่อเนื่องของ Bazel
การตั้งค่า CI ของ Bazel สำหรับการทดสอบ
- ในไฟล์ - .bazelci/presubmit.ymlให้ทำดังนี้- ก. เพิ่มการกำหนดค่าชื่อ - rbe_ubuntu1604- ข. ใน - rbe_ubuntu1604การกำหนดค่า ให้เพิ่มเป้าหมายการสร้างและการทดสอบที่คุณต้องการทดสอบกับการดำเนินการจากระยะไกล
- เพิ่มที่เก็บ - bazel-toolchainsGitHub ลงในไฟล์- 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 พร้อมการเปลี่ยนแปลงของคุณไปยังไฟล์ - presubmit.yml(ดูคำขอส่งการเปลี่ยนแปลงตัวอย่าง)
- หากต้องการดูผลการสร้าง ให้คลิกรายละเอียดสำหรับการตรวจสอบคำขอพุล RBE (Ubuntu 16.04) ใน GitHub ดังที่แสดงในรูปด้านล่าง ลิงก์นี้จะพร้อมใช้งานหลังจากผสานรวมคำขอ Pull และเรียกใช้การทดสอบ CI แล้ว (ดูผลลัพธ์ตัวอย่าง)  
- (ไม่บังคับ) ตั้งค่าการตรวจสอบ bazel test (RBE (Ubuntu 16.04)) เป็นการทดสอบ ที่ต้องผ่านก่อนที่จะผสานในกฎการป้องกันสาขา การตั้งค่า อยู่ใน GitHub ในการตั้งค่า > สาขา > กฎการป้องกันสาขา ดังที่แสดงในรูปต่อไปนี้  
การแก้ปัญหาการสร้างและการทดสอบที่ไม่สำเร็จ
หากบิลด์หรือการทดสอบล้มเหลว มักเกิดจากสาเหตุต่อไปนี้
- ไม่ได้ติดตั้งเครื่องมือบิลด์หรือเครื่องมือทดสอบที่จำเป็นในคอนเทนเนอร์เริ่มต้น บิลด์ที่ใช้ - rbe_ubuntu1604config จะทำงานโดยค่าเริ่มต้นภายในคอนเทนเนอร์- 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 สำหรับ คอนเทนเนอร์ล่าสุด
การสร้างคอนเทนเนอร์ rbe-ubuntu16-04 จากแหล่งที่มา
หากต้องการสร้างคอนเทนเนอร์ rbe-ubuntu16-04 จากแหล่งที่มา ให้ทำดังนี้
- โคลนที่เก็บ - bazel-toolchains- git 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 สำหรับคอนเทนเนอร์ล่าสุด
- หากคุณสร้างคอนเทนเนอร์จากแหล่งที่มา ให้เรียกใช้คำสั่งต่อไปนี้ - 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 ของคอนเทนเนอร์ที่กำหนดเอง คุณจะต้อง ระบุในคำจำกัดความแพลตฟอร์มการสร้างในภายหลัง 
- กำหนดค่าคอนเทนเนอร์สำหรับการเข้าถึงแบบสาธารณะตามที่อธิบายไว้ใน การแสดงรูปภาพต่อสาธารณะ - ดูข้อมูลเพิ่มเติมได้ที่การพุชและดึงอิมเมจ 
การระบุคำจำกัดความแพลตฟอร์มการสร้าง
คุณต้องรวมการกำหนดค่าแพลตฟอร์ม Bazel ไว้ในการกำหนดค่า Toolchain ที่กำหนดเอง ซึ่งจะช่วยให้ Bazel เลือก Toolchain ที่เหมาะสมกับแพลตฟอร์มฮาร์ดแวร์/ซอฟต์แวร์ที่ต้องการได้ หากต้องการสร้างแพลตฟอร์มที่ถูกต้องโดยอัตโนมัติ ให้เพิ่มลงในWORKSPACErbe_autoconfigเป้าหมายที่มีชื่อ buildkite_config ซึ่งมีแอตทริบิวต์เพิ่มเติมเพื่อเลือกคอนเทนเนอร์ที่กำหนดเอง อ่านรายละเอียดเกี่ยวกับการตั้งค่านี้ได้ในเอกสารประกอบล่าสุดสำหรับ rbe_autoconfig