Bazel เป็นเครื่องมือสร้างและทดสอบแบบโอเพนซอร์สที่คล้ายกับ Make, Maven และ Gradle ใช้ภาษาในการสร้างระดับสูงที่มนุษย์อ่านได้ Bazel รองรับโปรเจ็กต์ในหลายภาษาและสร้างเอาต์พุตสำหรับหลายแพลตฟอร์ม Bazel รองรับฐานของโค้ดขนาดใหญ่ในที่เก็บหลายแห่งและผู้ใช้จำนวนมาก
ข้อดี
Bazel มีข้อดีดังต่อไปนี้
ภาษาในการสร้างระดับสูง Bazel ใช้ภาษาที่มนุษย์อ่านเข้าใจได้เพื่ออธิบายคุณสมบัติของบิลด์ของโครงการในระดับสำคัญ Bazel ต่างจากเครื่องมืออื่นๆ ตรงที่ดำเนินการตามแนวคิดของไลบรารี ไบนารี สคริปต์ และชุดข้อมูล ปกป้องคุณจากความซับซ้อนในการเขียนการเรียกไปยังเครื่องมือต่างๆ เช่น คอมไพเลอร์และ Linker
Bazel ทำงานเร็วและเชื่อถือได้ Bazel แคชงานที่ทำก่อนหน้านี้ทั้งหมดและติดตามการเปลี่ยนแปลง ทั้งของเนื้อหาไฟล์และคำสั่งบิลด์ วิธีนี้ทำให้ Bazel รู้ได้ว่าจะต้องสร้างอะไรขึ้นใหม่ และจะสร้างสิ่งนั้นขึ้นมาใหม่เท่านั้น หากต้องการเพิ่มความเร็วของงานสร้าง คุณสามารถสร้างโปรเจ็กต์เพื่อสร้างอย่างต่อเนื่องและขนานกันได้มากขึ้น
Bazel เป็นแพลตฟอร์มที่หลากหลาย Bazel ใช้งานได้ใน Linux, macOS และ Windows Bazel สร้างไบนารีและแพ็กเกจที่ทำให้ใช้งานได้ได้สำหรับหลายแพลตฟอร์ม ซึ่งรวมถึงเดสก์ท็อป เซิร์ฟเวอร์ และอุปกรณ์เคลื่อนที่ จากโปรเจ็กต์เดียวกัน
มาตราวัดเบเซล Bazel ยังคงมีความคล่องตัวขณะที่จัดการบิลด์ที่มีไฟล์ต้นฉบับกว่า 100,000 ไฟล์ โดยทำงานได้กับที่เก็บและฐานผู้ใช้ต่างๆ หลายหมื่นราย
Bazel รองรับการขยายได้ มีการรองรับหลายภาษา และคุณสามารถขยายให้ Bazel รองรับภาษาหรือเฟรมเวิร์กอื่นๆ ได้ด้วย
การใช้ Bazel
หากต้องการสร้างหรือทดสอบโปรเจ็กต์ด้วย Bazel โดยปกติคุณจะทำสิ่งต่อไปนี้
ตั้งค่า Bazel ดาวน์โหลดและติดตั้ง Bazel
ตั้งค่าพื้นที่ทำงานของโปรเจ็กต์ ซึ่งเป็นไดเรกทอรีที่ Bazel มองหาอินพุตของบิลด์และไฟล์
BUILDและพื้นที่สำหรับจัดเก็บเอาต์พุตของบิลด์เขียนไฟล์
BUILDซึ่งจะบอก Bazel ให้ทราบถึงสิ่งที่ต้องสร้างและวิธีสร้างคุณเขียนไฟล์
BUILDด้วยการประกาศเป้าหมายของบิลด์โดยใช้ Starlark ซึ่งเป็นภาษาเฉพาะโดเมน (ดูตัวอย่างที่นี่)เป้าหมายบิลด์จะระบุชุดอาร์ติแฟกต์อินพุตที่ Bazel จะสร้าง รวมถึงทรัพยากร Dependency แล้วที่ Bazel จะใช้กฎการสร้างบิลด์ และตัวเลือกที่กำหนดค่ากฎของบิลด์
กฎการสร้างจะระบุเครื่องมือบิลด์ที่ Bazel จะใช้ เช่น คอมไพเลอร์และ Linker รวมถึงการกำหนดค่า Bazel จัดส่งมาพร้อมกฎการสร้างหลายๆ อย่างที่ครอบคลุมอาร์ติแฟกต์ประเภทต่างๆ ที่ใช้กันมากที่สุดในภาษาที่รองรับในแพลตฟอร์มที่รองรับ
เรียกใช้ Bazel จากบรรทัดคำสั่ง Bazel จัดวางเอาต์พุตของคุณไว้ภายในพื้นที่ทำงาน
นอกเหนือจากการสร้างแล้ว คุณยังใช้ Bazel เพื่อเรียกใช้การทดสอบและค้นหาบิลด์เพื่อติดตามการอ้างอิงในโค้ดได้ด้วย
กระบวนการบิลด์ Bazel
เมื่อเรียกใช้บิลด์หรือการทดสอบ Bazel จะทำสิ่งต่อไปนี้
โหลด ไฟล์
BUILDที่เกี่ยวข้องกับเป้าหมายวิเคราะห์อินพุตและการขึ้นต่อกันของอินพุต ใช้กฎการสร้างที่ระบุ และสร้างกราฟการดำเนินการ
ดำเนินการการทำงานของบิลด์กับอินพุตจนกว่าจะสร้างเอาต์พุตของบิลด์ขั้นสุดท้าย
เนื่องจากงานบิลด์ก่อนหน้าทั้งหมดถูกแคชไว้ Bazel จึงสามารถระบุและนำอาร์ติแฟกต์ที่แคชไว้มาใช้ซ้ำ รวมถึงสร้างหรือทดสอบสิ่งที่เปลี่ยนแปลงอีกครั้งได้ หากต้องการบังคับใช้การแก้ไขเพิ่มเติม คุณสามารถตั้งค่า Bazel ให้เรียกใช้บิลด์และทดสอบอย่างสอดคล้องกันผ่านแซนด์บ็อกซ์ ลดความคลาดเคลื่อน และเพิ่มความสามารถในการทำซ้ำให้ได้สูงสุด
กราฟการดำเนินการ
กราฟการดำเนินการจะแสดงอาร์ติแฟกต์ของบิลด์ ความสัมพันธ์ระหว่างอาร์ติแฟกต์ และการกระทำบิลด์ที่ Bazel จะทำ กราฟนี้ช่วยให้ Bazel สามารถติดตามการเปลี่ยนแปลงที่เกิดขึ้นกับเนื้อหาในไฟล์ รวมถึงการเปลี่ยนแปลงของการดำเนินการต่างๆ เช่น คำสั่งบิลด์หรือการทดสอบ และทราบว่าเคยสร้างงานใดไปแล้วบ้าง กราฟนี้ยังช่วยให้คุณติดตามการอ้างอิงในโค้ดได้อย่างง่ายดายอีกด้วย
บทแนะนำการเริ่มต้นใช้งาน
หากต้องการเริ่มต้นใช้งาน Bazel โปรดดูการเริ่มต้นใช้งานหรือข้ามไปยังบทแนะนำของ Bazel โดยตรงดังนี้