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

รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.4 ที่ใช้เวลาเพียง 2 นาที 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 สามารถสร้างไบนารีและแพ็กเกจที่นำไปใช้งานได้สำหรับแพลตฟอร์มหลายแพลตฟอร์ม ซึ่งรวมถึงเดสก์ท็อป เซิร์ฟเวอร์ และอุปกรณ์เคลื่อนที่จากโปรเจ็กต์เดียวกัน

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

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

การใช้ Bazel

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

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

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

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

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

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

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

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

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

กระบวนการบิลด์ Bazel

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

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

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

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

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

กราฟการกระทํา

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

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

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