Bazel เป็นเครื่องมือบิลด์ที่รวดเร็ว ถูกต้อง และขยายได้ พร้อมการทดสอบแบบผสานรวมที่รองรับภาษา ที่เก็บ และ แพลตฟอร์มต่างๆ ในระบบนิเวศชั้นนำของอุตสาหกรรม
Bazel ทำงานเร็ว
Bazel ทราบอย่างแน่ชัดว่าคำสั่งบิลด์แต่ละรายการต้องใช้อินพุตไฟล์ใด จึงหลีกเลี่ยง การทำงานที่ไม่จำเป็นด้วยการเรียกใช้ซ้ำเฉพาะเมื่อชุดไฟล์อินพุตมีการ เปลี่ยนแปลงระหว่างบิลด์แต่ละครั้ง โดยจะเรียกใช้คำสั่งบิลด์แบบขนานให้ได้มากที่สุด ไม่ว่าจะภายในคอมพิวเตอร์เครื่องเดียวกันหรือในโหนดบิลด์ระยะไกล หากโครงสร้างของบิลด์ อนุญาต ก็จะเรียกใช้คำสั่งบิลด์หรือทดสอบหลายพันคำสั่งได้พร้อมกัน
ซึ่งได้รับการสนับสนุนจากเลเยอร์การแคชหลายเลเยอร์ในหน่วยความจำ บนดิสก์ และใน ฟาร์มบิลด์ระยะไกล (หากมี) ที่ Google เรามักจะบรรลุอัตราการเข้าถึงแคช ที่สูงกว่า 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 ใช้ได้ สำรวจส่วนขยายต่างๆ เช่น การรองรับภาษาโปรแกรมในที่เก็บซอฟต์แวร์โอเพนซอร์สของเรา