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