เหตุใด 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 สามารถสร้างโปรเจ็กต์สำหรับหลายแพลตฟอร์มได้พร้อมกัน เช่น Linux, macOS, Windows และ Android และยังมีความสามารถในการคอมไพล์แบบข้ามระบบที่มีประสิทธิภาพสำหรับสร้างโค้ดสำหรับแพลตฟอร์มหนึ่งในขณะที่เรียกใช้บิลด์บนอีกแพลตฟอร์มหนึ่ง

ระบบนิเวศแบบกว้าง

ผู้นำในวงการชื่นชอบ Bazel ที่สร้างชุมชนขนาดใหญ่นักพัฒนาที่ใช้และมีส่วนร่วมใน Bazel ค้นหาเครื่องมือ บริการ และเอกสารต่างๆ รวมถึงข้อเสนอสำหรับ SaaS Bazel ก็ใช้งานได้ สำรวจส่วนขยายต่างๆ เช่น การรองรับภาษาโปรแกรมในที่เก็บซอฟต์แวร์โอเพนซอร์สของเรา