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