ข้อมูลเบื้องต้นเกี่ยวกับ Bazel

รายงานปัญหา ดูแหล่งที่มา

Bazel คือเครื่องมือสร้างแบบโอเพนซอร์สและเครื่องมือทดสอบที่คล้ายกับ Make, Maven และ Gradle โดยใช้ภาษาบิวด์ระดับสูงที่มนุษย์อ่านได้ Bazel รองรับโปรเจ็กต์ในหลายภาษา และสร้างเอาต์พุตสําหรับแพลตฟอร์มต่างๆ Bazel รองรับฐานของโค้ดจํานวนมากในที่เก็บจํานวนมากและผู้ใช้จํานวนมาก

ข้อดี

Bazel มีข้อได้เปรียบดังนี้:

  • ภาษาของงานระดับสูง บาแซลใช้ภาษาแอ็บสแตรกที่อ่านได้ของมนุษย์เพื่ออธิบายคุณสมบัติบิวด์ของโปรเจ็กต์ในระดับสูง Bazel ต่างจากแนวคิดอื่นๆ ในไลบรารี ไบนารี สคริปต์ และชุดข้อมูล ซึ่งจะช่วยปกป้องคุณจากความซับซ้อนของการเขียนการเรียกไปยังเครื่องมือต่างๆ เช่น คอมไพเลอร์และ Linker

  • Bazel รวดเร็วและเชื่อถือได้ Bazel จะเก็บแคชงานที่ทําไว้ก่อนหน้านี้ทั้งหมด และติดตามการเปลี่ยนแปลงทั้งเนื้อหาไฟล์และคําสั่งบิวด์ วิธีนี้ทําให้ Bazel รู้ว่า ต้องไปสร้างอะไรขึ้นมาใหม่ไหม หากต้องการเร่งบิวด์ให้เร็วขึ้น ก็ตั้งค่าโปรเจ็กต์เพื่อสร้างแบบขนานและเพิ่มขึ้นทีละน้อยได้

  • Bazel เป็นแพลตฟอร์มที่หลากหลาย Bazel ทํางานบน Linux, macOS และ Windows Bazel สร้างไบนารีและแพ็กเกจที่สามารถทําให้ใช้งานได้สําหรับหลายแพลตฟอร์ม ซึ่งรวมถึงเดสก์ท็อป เซิร์ฟเวอร์ และอุปกรณ์เคลื่อนที่จากโปรเจ็กต์เดียวกัน

  • สเกล Bazel Bazel ช่วยให้ความคล่องแคล่วขณะจัดการงานสร้างด้วยไฟล์ต้นฉบับกว่า 100,000 ไฟล์ โดยสามารถทํางานกับที่เก็บข้อมูลหลายแหล่งและฐานผู้ใช้หลายหมื่นรายการ

  • Bazel สามารถขยายได้ทั้งหมด ภาษาต่างๆ ได้รับการสนับสนุน และคุณยังขยาย Bazel เพื่อสนับสนุนภาษาหรือเฟรมเวิร์กอื่นๆ ได้ด้วย

การใช้ Bazel

หากต้องการสร้างหรือทดสอบโครงการด้วย Bazel โดยปกติแล้วคุณจะดําเนินการต่อไปนี้

  1. ตั้งค่า Bazel ดาวน์โหลดและติดตั้ง Bazel

  2. ตั้งค่าพื้นที่ทํางานของโปรเจ็กต์ ซึ่งเป็นไดเรกทอรีที่ Bazel จะมองหาอินพุตบิวด์และไฟล์ BUILD รวมถึงตําแหน่งที่เก็บเอาต์พุตบิวด์

  3. เขียนไฟล์ BUILD ซึ่งจะบอก Bazel เกี่ยวกับสิ่งที่ควรสร้างและวิธีสร้าง

    คุณเขียนไฟล์ BUILD ด้วยการประกาศเป้าหมายบิวด์โดยใช้ Starlark ซึ่งเป็นภาษาเฉพาะโดเมน (ดูตัวอย่างที่นี่)

    เป้าหมายบิวด์จะระบุชุดของอาร์ติแฟกต์อินพุตที่ Bazel จะสร้างบวกด้วย Dependencies ดังกล่าว กฎบิวด์ที่ Bazel จะใช้ในการสร้างและตัวเลือกที่กําหนดค่ากฎบิวด์

    กฎของบิลด์จะระบุเครื่องมือสร้างที่ Bazel จะใช้ เช่น คอมไพเลอร์และ Linker และการกําหนดค่า Bazel มีกฎบิวด์มากมายที่ครอบคลุมประเภทอาร์ติแฟกต์ที่พบบ่อยที่สุดในภาษาที่รองรับในแพลตฟอร์มที่รองรับ

  4. เรียกใช้ Bazel จากบรรทัดคําสั่ง บาเซลวางเอาต์พุตไว้ภายในพื้นที่ทํางาน

นอกเหนือจากการสร้างแล้ว คุณยังใช้ Bazel เพื่อเรียกใช้การทดสอบและสืบค้นบิลด์เพื่อติดตามการอ้างอิงทรัพยากรในโค้ดได้อีกด้วย

กระบวนการสร้าง Bazel

เมื่อเรียกใช้บิวด์หรือการทดสอบ Bazel จะดําเนินการดังต่อไปนี้

  1. โหลด BUILD ไฟล์ที่เกี่ยวข้องกับเป้าหมาย

  2. วิเคราะห์อินพุตและการขึ้นต่อกัน ใช้กฎของบิวด์ที่ระบุ และสร้างกราฟการดําเนินการ

  3. เรียกใช้บิวด์ต่างๆ ของอินพุตจนกว่าจะสร้างเอาต์พุตของบิลด์ในขั้นสุดท้าย

เนื่องจากงานบิลด์ก่อนหน้านี้ทั้งหมดถูกแคชไว้ Bazel จะระบุและนําอาร์ติแฟกต์ที่แคชไว้มาใช้ซ้ํา รวมถึงสร้างหรือทดสอบเฉพาะสิ่งที่เปลี่ยนแปลงอีกครั้งเท่านั้น หากต้องการบังคับใช้ความถูกต้องเพิ่มเติม คุณอาจตั้งค่า Bazel เพื่อเรียกใช้บิวด์และการทดสอบแบบต่อเนื่องผ่านแซนด์บ็อกซ์ การลดขนาดการบิดเบือน และการทําซ้ําให้ได้สูงสุด

กราฟการดําเนินการ

กราฟการดําเนินการแสดงอาร์ติแฟกต์บิวด์ ความสัมพันธ์ระหว่างออบเจ็กต์เหล่านั้น และการดําเนินการบิวด์ที่ Bazel จะดําเนินการ กราฟนี้ช่วยให้ Bazel ติดตามการเปลี่ยนแปลงเนื้อหาไฟล์ รวมถึงการเปลี่ยนแปลงการดําเนินการต่างๆ เช่น คําสั่งบิวด์หรือการทดสอบได้ และรู้ว่าบิวด์ใดที่เคยทําแล้ว นอกจากนี้ กราฟยังช่วยให้คุณ ติดตามการอ้างอิงในโค้ดได้ง่ายๆ

บทแนะนําการเริ่มต้น

ในการเริ่มต้นใช้งาน Bazel ให้ดูการเริ่มต้นใช้งาน หรือข้ามไปยังบทแนะนําของ Bazel โดยตรง