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