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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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