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 เพื่อเรียกใช้ การทดสอบและ ค้นหาบิลด์เพื่อติดตามทรัพยากร Dependency ใน โค้ดได้ด้วย
กระบวนการบิลด์ Bazel
เมื่อเรียกใช้การสร้างหรือการทดสอบ Bazel จะทำสิ่งต่อไปนี้
โหลด ไฟล์
BUILDที่เกี่ยวข้องกับเป้าหมายวิเคราะห์ อินพุตและทรัพยากร Dependencyของอินพุต ใช้กฎการสร้างที่ระบุ และสร้างกราฟการดำเนินการ
ดำเนินการ การดำเนินการสร้างกับอินพุตจนกว่าจะสร้างเอาต์พุตการสร้างขั้นสุดท้าย
เนื่องจากระบบแคชงานบิลด์ทั้งหมดที่ทำไว้ก่อนหน้านี้ Bazel จึงระบุและนำอาร์ติแฟกต์ที่แคชไว้กลับมาใช้ซ้ำได้ รวมถึงสร้างใหม่หรือทดสอบใหม่เฉพาะสิ่งที่เปลี่ยนแปลง คุณสามารถตั้งค่า Bazel ให้เรียกใช้การสร้างและการทดสอบ แบบปิดสนิทผ่านแซนด์บ็อกซ์เพื่อบังคับใช้ความถูกต้อง มากยิ่งขึ้น ซึ่งจะช่วยลดความคลาดเคลื่อนและเพิ่มความสามารถในการทำซ้ำ ให้มากที่สุด
กราฟการดำเนินการ
กราฟการดำเนินการแสดงอาร์ติแฟกต์การสร้าง ความสัมพันธ์ระหว่างอาร์ติแฟกต์ และการดำเนินการสร้างที่ Bazel จะดำเนินการ กราฟนี้ช่วยให้ Bazel สามารถ ติดตามการเปลี่ยนแปลงเนื้อหาไฟล์ รวมถึงการเปลี่ยนแปลงการดำเนินการ เช่น คำสั่งบิลด์หรือการทดสอบ และทราบว่ามีการบิลด์ อะไรไว้ก่อนหน้านี้บ้าง นอกจากนี้ กราฟยังช่วยให้คุณติดตามการขึ้นต่อกันในโค้ดได้อย่างง่ายดาย trace dependencies
บทแนะนำสำหรับการเริ่มต้นใช้งาน
หากต้องการเริ่มต้นใช้งาน Bazel โปรดดู การเริ่มต้นใช้งาน หรือข้าม ไปยังบทแนะนำ Bazel โดยตรง