Bazel เป็นเครื่องมือสร้างและทดสอบแบบโอเพนซอร์สที่คล้ายกับ Make, Maven และ Gradle โดยใช้ภาษาการสร้างระดับสูงที่มนุษย์อ่านได้ Bazel รองรับโปรเจ็กต์ในหลายภาษาและสร้างเอาต์พุตสำหรับหลายแพลตฟอร์ม นอกจากนี้ยังรองรับฐานโค้ดขนาดใหญ่ในที่เก็บหลายแห่งและผู้ใช้จำนวนมาก
สิทธิประโยชน์
Bazel มีข้อดีดังต่อไปนี้
ภาษาบิลด์ระดับสูง Bazel ใช้ภาษาที่เป็นนามธรรมและมนุษย์อ่านได้เพื่ออธิบายพร็อพเพอร์ตี้การสร้างของโปรเจ็กต์ในระดับความหมายสูง Bazel ทำงานกับ แนวคิด ของไลบรารี ไบนารี สคริปต์ และชุดข้อมูล ซึ่งช่วยลดความซับซ้อนในการเขียนการเรียกใช้เครื่องมือแต่ละรายการ เช่น คอมไพเลอร์และลิงเกอร์
Bazel รวดเร็วและเชื่อถือได้ Bazel แคชงานทั้งหมดที่ทำไว้ก่อนหน้านี้และติดตามการเปลี่ยนแปลงทั้งเนื้อหาไฟล์และคำสั่งการสร้าง ด้วยวิธีนี้ Bazel จะทราบว่าต้องสร้างใหม่เมื่อใดและสร้างใหม่เฉพาะสิ่งที่เปลี่ยนแปลง คุณสามารถตั้งค่าโปรเจ็กต์ให้สร้างแบบขนานสูงและแบบเพิ่มทีละส่วนเพื่อเพิ่มความเร็วในการสร้าง
Bazel ทำงานได้หลายแพลตฟอร์ม Bazel ทำงานบน Linux, macOS และ Windows Bazel สามารถสร้างไบนารีและแพ็กเกจที่ปรับใช้ได้สำหรับหลายแพลตฟอร์ม รวมถึงเดสก์ท็อป เซิร์ฟเวอร์ และอุปกรณ์เคลื่อนที่จากโปรเจ็กต์เดียวกันได้
Bazel ปรับขนาดได้ Bazel ยังคงความคล่องตัวไว้ได้ขณะจัดการการสร้างด้วยไฟล์ต้นฉบับมากกว่า 100,000 รายการ และทำงานร่วมกับที่เก็บหลายแห่งและฐานผู้ใช้หลายหมื่นรายได้
Bazel ขยายได้ รองรับหลายภาษา และคุณสามารถขยาย Bazel เพื่อรองรับภาษาหรือ เฟรมเวิร์กอื่นๆ ได้
การใช้ Bazel
โดยปกติแล้วคุณจะทำดังต่อไปนี้เพื่อสร้างหรือทดสอบโปรเจ็กต์ด้วย Bazel
ตั้งค่า Bazel ดาวน์โหลดและติดตั้ง Bazel
ตั้งค่าโปรเจ็กต์ พื้นที่ทำงาน ซึ่งเป็น ไดเรกทอรีที่ Bazel ค้นหาอินพุตการสร้างและไฟล์
BUILDรวมถึงที่ จัดเก็บเอาต์พุตการสร้างเขียนไฟล์
BUILDซึ่งจะบอก Bazel ว่าต้องสร้างอะไรและสร้างอย่างไรคุณเขียนไฟล์
BUILDโดยประกาศเป้าหมายการสร้างโดยใช้ Starlark ซึ่งเป็นภาษาเฉพาะของโดเมน (ดู ตัวอย่าง ที่นี่ )เป้าหมายการสร้างจะระบุชุดอาร์ติแฟกต์อินพุตที่ Bazel จะสร้าง รวมถึงทรัพยากร Dependency กฎการสร้างที่ Bazel จะใช้สร้าง และตัวเลือกที่กำหนดค่ากฎการสร้าง
กฎการสร้างจะระบุเครื่องมือการสร้างที่ Bazel จะใช้ เช่น คอมไพเลอร์และลิงเกอร์ รวมถึงการกำหนดค่า Bazel มาพร้อมกับกฎการสร้างจำนวนมากที่ครอบคลุมอาร์ติแฟกต์ประเภทที่พบบ่อยที่สุดในภาษาที่รองรับบนแพลตฟอร์มที่รองรับ
เรียกใช้ Bazel จาก บรรทัด คำสั่ง Bazel จะวางเอาต์พุตไว้ในพื้นที่ทำงาน
นอกจากการสร้างแล้ว คุณยังใช้ Bazel เพื่อเรียกใช้ การทดสอบและ ค้นหาบิลด์เพื่อติดตามทรัพยากร Dependency ใน โค้ดได้ด้วย
กระบวนการบิลด์ Bazel
เมื่อเรียกใช้การสร้างหรือการทดสอบ Bazel จะทำดังนี้
โหลด ไฟล์
BUILDที่เกี่ยวข้องกับเป้าหมายวิเคราะห์ อินพุตและ ทรัพยากร Dependency ใช้กฎการสร้างที่ระบุ และสร้าง กราฟการดำเนินการ
ดำเนินการ การดำเนินการบิลด์กับอินพุตจนกว่าจะมีการสร้างเอาต์พุตบิลด์ขั้นสุดท้าย
เนื่องจากงานบิลด์ทั้งหมดก่อนหน้านี้ถูกแคชไว้ Bazel จึงระบุและนำอาร์ติแฟกต์ที่แคชไว้กลับมาใช้ซ้ำได้ รวมถึงสร้างใหม่หรือทดสอบใหม่เฉพาะสิ่งที่เปลี่ยนแปลง คุณสามารถตั้งค่า Bazel ให้เรียกใช้การสร้างและการทดสอบ แบบปิดสนิทผ่านแซนด์บ็อกซ์เพื่อบังคับใช้ความถูกต้องเพิ่มเติม ซึ่งจะช่วยลดความคลาดเคลื่อนและเพิ่มความสามารถในการทำซ้ำ ให้ได้มากที่สุด
กราฟการดำเนินการ
กราฟการดำเนินการแสดงอาร์ติแฟกต์การสร้าง ความสัมพันธ์ระหว่างอาร์ติแฟกต์ และการดำเนินการสร้างที่ Bazel จะดำเนินการ กราฟนี้ช่วยให้ Bazel สามารถ ติดตามการเปลี่ยนแปลงเนื้อหาไฟล์ รวมถึงการเปลี่ยนแปลงการดำเนินการ เช่น คำสั่งการสร้างหรือการทดสอบ และทราบว่ามีการดำเนินการสร้าง ใดไว้ก่อนหน้านี้ นอกจากนี้ กราฟยังช่วยให้คุณติดตามการขึ้นต่อกันในโค้ดได้อย่างง่ายดาย trace dependencies
บทแนะนำเริ่มต้นใช้งาน
หากต้องการเริ่มต้นใช้งาน Bazel โปรดดู การเริ่มต้นใช้งาน หรือข้าม ไปยังบทแนะนำ Bazel โดยตรง