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