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 โดยตรง