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