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

รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

ประโยชน์

Bazel มีข้อดีดังต่อไปนี้

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

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

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

  • สเกลบาเซล Bazel รักษาความคล่องตัวในระหว่างจัดการงานสร้างที่มียอดกว่า 1 แสน ไฟล์ต้นฉบับ ใช้งานได้กับที่เก็บและฐานผู้ใช้ที่หลากหลายนับสิบ นับพัน

  • Bazel มีความยืดหยุ่น มีหลายภาษา และคุณสามารถขยายให้ Bazel รองรับภาษาอื่นๆ หรือ

การใช้ Bazel

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

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

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

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

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

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

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

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

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

ขั้นตอนการสร้าง Bazel

ขณะเรียกใช้บิลด์หรือการทดสอบ Bazel จะดำเนินการต่อไปนี้

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

  2. วิเคราะห์อินพุตและข้อมูล dependencies ใช้บิลด์ที่ระบุ และสร้างการดำเนินการ กราฟ

  3. ดำเนินการการทำงานของบิลด์บนอินพุตจนกว่าเอาต์พุตของบิลด์จะเป็นครั้งสุดท้าย ในการผลิต

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

กราฟการทำงาน

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

บทแนะนำสำหรับการเริ่มต้นใช้งาน

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