เหตุใด Bazel

รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bazel เป็นผลิตภัณฑ์ที่รวดเร็ว ถูกต้อง และมีความยืดหยุ่น เครื่องมือสร้างที่มีการทดสอบแบบผสานรวมที่รองรับ ภาษา ที่เก็บ และ แพลตฟอร์มในระบบนิเวศระดับชั้นนำของอุตสาหกรรม

Bazel เร็ว

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

ซึ่งรองรับโดยเลเยอร์การแคชหลายชั้น ในหน่วยความจำ บนดิสก์ และบน ฟาร์มที่ก่อสร้างจากระยะไกล (หากมี) ที่ Google เราได้รับอัตราการค้นพบแคชเป็นประจำ ทางเหนือ 99%

Bazel ถูกต้อง

Bazel ตรวจสอบว่ามีการสร้างไบนารีของคุณเท่านั้นจากข้อมูลของตนเอง ซอร์สโค้ด การดำเนินการของ Bazel จะทำงานในแซนด์บ็อกซ์และแทร็ก Bazel แต่ละรายการ ไฟล์อินพุตทุกรายการของบิลด์ เฉพาะและเรียกใช้บิลด์อีกครั้งเสมอ ในเวลาที่จำเป็น การทำเช่นนี้จะทำให้ไบนารีของคุณเป็นปัจจุบัน เพื่อให้ ซอร์สโค้ดเดียวกันเสมอจะให้ผลลัพธ์เป็นไบนารีเดียวกัน บิต ทีละบิต

บอกลาไบต์กับคำขอ make clean ที่ไม่รู้จบและไล่แมลงปีศาจ ซึ่งความจริงแล้วได้รับการแก้ไขในซอร์สโค้ดที่ไม่เคยสร้างขึ้นมาก่อน

Bazel ขยายได้

ใช้ประโยชน์จากศักยภาพของ Bazel อย่างเต็มที่ด้วยการเขียนกฎและมาโครของคุณเองเพื่อ ปรับแต่ง Bazel ได้ตามความต้องการเฉพาะของคุณในโปรเจ็กต์ต่างๆ

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

การทดสอบแบบผสานรวม

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