เหตุใด Bazel

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 ใช้ได้ สำรวจส่วนขยายต่างๆ เช่น การรองรับภาษาเขียนโปรแกรมในที่เก็บซอฟต์แวร์โอเพนซอร์ส ของเรา