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