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