Bazel เป็นเครื่องมือสร้างและทดสอบโอเพนซอร์สที่คล้ายกับ Make, Maven และ Gradle โดยใช้ภาษาบิลด์ระดับสูงที่มนุษย์อ่านได้ Bazel รองรับโปรเจ็กต์ใน หลายภาษาและสร้างเอาต์พุตสำหรับหลายแพลตฟอร์ม Bazel รองรับ โค้ดเบสขนาดใหญ่ในที่เก็บหลายแห่งและผู้ใช้จำนวนมาก
ข้อดี
Bazel มีข้อดีดังนี้
- ภาษาที่ใช้ในการสร้างระดับสูง Bazel ใช้ภาษาที่มนุษย์อ่านได้และเป็นนามธรรม เพื่ออธิบายพร็อพเพอร์ตี้การสร้างของโปรเจ็กต์ในระดับ ความหมายสูง Bazel ทำงานบนแนวคิดของไลบรารี ไบนารี สคริปต์ และชุดข้อมูล ซึ่งแตกต่างจากเครื่องมืออื่นๆ ทำให้คุณไม่ต้องกังวลกับความซับซ้อนของการเขียนการเรียกใช้เครื่องมือแต่ละรายการ เช่น คอมไพเลอร์และลิงเกอร์ 
- Bazel รวดเร็วและเชื่อถือได้ Bazel จะแคชงานทั้งหมดที่ทำก่อนหน้านี้และ ติดตามการเปลี่ยนแปลงทั้งเนื้อหาไฟล์และคำสั่งบิลด์ วิธีนี้จะช่วยให้ Bazel ทราบว่าเมื่อใดที่ต้องสร้างใหม่ และจะสร้างใหม่เฉพาะส่วนนั้น หากต้องการ เพิ่มความเร็วในการบิลด์ คุณสามารถตั้งค่าโปรเจ็กต์ให้บิลด์ในลักษณะ แบบขนานและแบบเพิ่มทีละรายการได้ 
- Bazel ใช้ได้หลายแพลตฟอร์ม Bazel ทำงานบน Linux, macOS และ Windows Bazel สามารถสร้างไบนารีและแพ็กเกจที่พร้อมใช้งานสำหรับหลายแพลตฟอร์ม ซึ่งรวมถึง เดสก์ท็อป เซิร์ฟเวอร์ และอุปกรณ์เคลื่อนที่ จากโปรเจ็กต์เดียวกัน 
- Bazel ปรับขนาดได้ Bazel ช่วยให้มีความคล่องตัวขณะจัดการบิลด์ที่มีไฟล์ต้นฉบับมากกว่า 100,000 ไฟล์ โดยทำงานร่วมกับที่เก็บข้อมูลหลายรายการและฐานผู้ใช้หลายหมื่นราย 
- Bazel ขยายได้ Bazel รองรับภาษามากมาย และคุณสามารถขยาย Bazel ให้รองรับภาษาหรือ เฟรมเวิร์กอื่นๆ ได้ 
การใช้ Bazel
โดยปกติแล้ว หากต้องการสร้างหรือทดสอบโปรเจ็กต์ด้วย Bazel คุณจะต้องดำเนินการต่อไปนี้
- ตั้งค่า Bazel ดาวน์โหลดและติดตั้ง Bazel 
- ตั้งค่าพื้นที่ทำงานของโปรเจ็กต์ ซึ่งเป็นไดเรกทอรีที่ Bazel ใช้ค้นหาอินพุตการสร้างและไฟล์ - BUILDรวมถึงที่จัดเก็บเอาต์พุตการสร้าง
- เขียนไฟล์ - BUILDซึ่งจะบอก Bazel ว่าต้องสร้างอะไรและวิธีสร้าง- คุณเขียนไฟล์ - BUILDโดยประกาศเป้าหมายการสร้างโดยใช้ Starlark ซึ่งเป็นภาษาเฉพาะโดเมน (ดูตัวอย่างที่นี่)- เป้าหมายการบิลด์จะระบุชุดอาร์ติแฟกต์อินพุตที่ Bazel จะบิลด์ รวมถึง การขึ้นต่อกัน กฎการบิลด์ที่ Bazel จะใช้ในการบิลด์ และตัวเลือก ที่กำหนดค่ากฎการบิลด์ - กฎการสร้างจะระบุเครื่องมือบิลด์ที่ Bazel จะใช้ เช่น คอมไพเลอร์และ ลิงเกอร์ รวมถึงการกำหนดค่าของเครื่องมือเหล่านั้น Bazel มาพร้อมกับกฎการบิลด์จำนวนหนึ่ง ซึ่งครอบคลุมอาร์ติแฟกต์ประเภทที่พบบ่อยที่สุดในภาษาที่รองรับบน แพลตฟอร์มที่รองรับ 
- เรียกใช้ Bazel จากบรรทัดคำสั่ง Bazel จะวางเอาต์พุตไว้ในพื้นที่ทำงาน 
นอกจากจะใช้ Bazel ในการสร้างแล้ว คุณยังใช้เพื่อเรียกใช้การทดสอบและค้นหาบิลด์ เพื่อติดตามการอ้างอิงในโค้ดได้ด้วย
กระบวนการบิลด์ Bazel
เมื่อเรียกใช้บิลด์หรือการทดสอบ Bazel จะดำเนินการต่อไปนี้
- โหลดไฟล์ - BUILDที่เกี่ยวข้องกับเป้าหมาย
- วิเคราะห์อินพุตและการขึ้นต่อกันของอินพุตเหล่านั้น ใช้กฎการบิลด์ที่ระบุ และสร้างกราฟการดำเนินการ 
- ดำเนินการการดำเนินการบิลด์ในอินพุตจนกว่าจะสร้างเอาต์พุตบิลด์สุดท้าย 
เนื่องจากระบบจะแคชงานบิลด์ก่อนหน้าทั้งหมด Bazel จึงระบุและนำอาร์ติแฟกต์ที่แคชไว้กลับมาใช้ใหม่ได้ และจะสร้างใหม่หรือทดสอบซ้ำเฉพาะสิ่งที่เปลี่ยนแปลงเท่านั้น คุณสามารถตั้งค่า Bazel ให้เรียกใช้บิลด์และการทดสอบแบบแยกส่วนผ่านแซนด์บ็อกซ์เพื่อบังคับใช้ความถูกต้องเพิ่มเติม ซึ่งจะช่วยลดความคลาดเคลื่อนและเพิ่มความสามารถในการทำซ้ำให้สูงสุด
กราฟการดำเนินการ
กราฟการดำเนินการแสดงอาร์ติแฟกต์การบิลด์ ความสัมพันธ์ระหว่างอาร์ติแฟกต์เหล่านั้น และการดำเนินการบิลด์ที่ Bazel จะดำเนินการ กราฟนี้ช่วยให้ Bazel สามารถติดตามการเปลี่ยนแปลงเนื้อหาไฟล์ รวมถึงการเปลี่ยนแปลงการดำเนินการ เช่น คำสั่งบิลด์หรือทดสอบ และทราบว่าก่อนหน้านี้มีการบิลด์อะไรไปบ้าง นอกจากนี้ กราฟยังช่วยให้คุณติดตามการอ้างอิงในโค้ดได้อย่างง่ายดาย
บทแนะนำการเริ่มต้นใช้งาน
หากต้องการเริ่มต้นใช้งาน Bazel โปรดดูการเริ่มต้นใช้งานหรือข้าม ไปที่บทแนะนำ Bazel โดยตรง