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