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