Bazel เป็นเครื่องมือสร้างที่รวดเร็ว ถูกต้อง และขยายได้ โดยมีการทดสอบแบบรวมที่รองรับภาษา ที่เก็บข้อมูล และแพลตฟอร์มหลายรายการในระบบนิเวศชั้นนําของอุตสาหกรรม
Bazel ทำงานเร็ว
Bazel ทราบไฟล์อินพุตที่คำสั่งบิลด์แต่ละรายการต้องการอย่างแน่ชัด จึงหลีกเลี่ยงการทำงานที่ไม่จำเป็นด้วยการเรียกใช้อีกครั้งเฉพาะในกรณีที่ชุดไฟล์อินพุตมีการเปลี่ยนแปลงระหว่างการสร้างแต่ละครั้ง โดยจะเรียกใช้คำสั่งบิลด์แบบขนานกันมากที่สุดเท่าที่จะเป็นไปได้ ไม่ว่าจะเป็นในคอมพิวเตอร์เครื่องเดียวกันหรือในโหนดบิลด์ระยะไกล หากโครงสร้างของบิลด์อนุญาต ก็สามารถเรียกใช้คำสั่งบิลด์หรือทดสอบหลายพันรายการพร้อมกันได้
การดำเนินการนี้รองรับเลเยอร์แคชหลายเลเยอร์ ในหน่วยความจำ ในดิสก์ และในฟาร์มการสร้างระยะไกล (หากมี) ที่ Google เรามักจะได้อัตรา Hit ของแคชมากกว่า 99%
Bazel ถูกต้อง
Bazel ช่วยให้มั่นใจว่าไบนารีจะสร้างขึ้นจากซอร์สโค้ดของคุณเองเท่านั้น การดำเนินการของ Bazel จะทำงานในแซนด์บ็อกซ์แต่ละรายการ และ Bazel จะติดตามไฟล์อินพุตทุกไฟล์ของบิลด์ โดยจะเรียกใช้คำสั่งบิลด์ซ้ำเมื่อจำเป็นเท่านั้น วิธีนี้จะช่วยให้ไบนารีเป็นเวอร์ชันล่าสุดอยู่เสมอเพื่อให้ซอร์สโค้ดเดียวกันสร้างไบนารีเดียวกันได้เสมอ ทีละบิต
บอกลาการเรียกใช้ make clean
ที่ไม่มีที่สิ้นสุดและการตามล่าข้อบกพร่องที่มองไม่เห็นซึ่งแท้จริงแล้วได้รับการแก้ไขแล้วในซอร์สโค้ดที่ไม่เคยได้รับการสร้าง
Bazel ขยายได้
ใช้ความสามารถของ Bazel อย่างเต็มที่ด้วยการเขียนกฎและมาโครของคุณเองเพื่อปรับแต่ง Bazel ให้เหมาะกับความต้องการเฉพาะในโปรเจ็กต์ต่างๆ
กฎ Bazel เขียนด้วย Starlark ซึ่งเป็นภาษาโปรแกรมที่เราพัฒนาขึ้นเองและเป็นส่วนหนึ่งของ Python Starlark ช่วยให้นักพัฒนาซอฟต์แวร์ส่วนใหญ่เขียนกฎได้ ทั้งยังสร้างกฎที่ใช้ได้ทั่วทั้งระบบนิเวศ
การทดสอบแบบรวม
โปรแกรมรันทดสอบแบบรวมของ Bazel จะรู้และเรียกใช้เฉพาะการทดสอบที่ต้องเรียกใช้อีกครั้ง โดยใช้การเรียกใช้จากระยะไกล (หากมี) เพื่อเรียกใช้การทดสอบเหล่านั้นพร้อมกัน ตรวจหาข้อบกพร่องตั้งแต่เนิ่นๆ โดยใช้การดำเนินการระยะไกลเพื่อทำการทดสอบหลายพันครั้งอย่างรวดเร็ว
Bazel มีเครื่องมือในการอัปโหลดผลการทดสอบไปยังตำแหน่งส่วนกลาง ซึ่งช่วยให้การสื่อสารผลลัพธ์การทดสอบเป็นไปอย่างมีประสิทธิภาพ ไม่ว่าจะเป็นใน CI หรือโดยนักพัฒนาแอปแต่ละคน
การรองรับหลายภาษา
Bazel รองรับภาษาโปรแกรมทั่วไปหลายภาษา เช่น C++, Java, Kotlin, Python, Go และ Rust คุณสามารถสร้างไบนารีหลายรายการ (เช่น แบ็กเอนด์, UI ของเว็บ และแอปบนอุปกรณ์เคลื่อนที่) ในการเรียกใช้ Bazel เดียวกันได้โดยไม่ต้องถูกจำกัดด้วยเครื่องมือสร้างแบบดั้งเดิมของภาษาใดภาษาหนึ่ง
การรองรับที่เก็บข้อมูลหลายแห่ง
Bazel สามารถรวบรวมซอร์สโค้ดจากหลายตำแหน่ง คุณจึงไม่จำเป็นต้องระบุผู้ให้บริการของทรัพยากร Dependency (แต่ทำได้) เพียงชี้ Bazel ไปยังตำแหน่งของซอร์สโค้ดหรืออาร์ติแฟกต์ที่สร้างไว้ล่วงหน้า (เช่น ที่เก็บ Git หรือ Maven Central) แล้ว Bazel จะจัดการส่วนที่เหลือให้
การรองรับหลายแพลตฟอร์ม
Bazel สามารถบิลด์โปรเจ็กต์สำหรับแพลตฟอร์มหลายแพลตฟอร์มพร้อมกันได้ ซึ่งรวมถึง Linux, macOS, Windows และ Android นอกจากนี้ ยังมีความสามารถในการคอมไพล์ข้ามแพลตฟอร์มที่มีประสิทธิภาพเพื่อสร้างโค้ดสำหรับแพลตฟอร์มหนึ่งขณะที่เรียกใช้บิลด์ในอีกแพลตฟอร์มหนึ่ง
ระบบนิเวศที่ครอบคลุม
ผู้นำอุตสาหกรรมชื่นชอบ Bazel ซึ่งทำให้เรามีชุมชนนักพัฒนาซอฟต์แวร์ขนาดใหญ่ที่ใช้และมีส่วนร่วมใน Bazel ค้นหาเครื่องมือ บริการ และเอกสารประกอบ รวมถึงข้อเสนอการให้คําปรึกษาและ SaaS ที่ Bazel ใช้ได้ สำรวจส่วนขยาย เช่น การรองรับภาษาโปรแกรมในที่เก็บซอฟต์แวร์โอเพนซอร์สของเรา