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

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 โดยปกติคุณจะทำสิ่งต่อไปนี้

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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