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