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

รายงานปัญหา ดูซอร์สโค้ด รุ่น Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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 ให้ทำการบิลด์และทดสอบอย่างสมบูรณ์ผ่านแซนด์บ็อกซ์ เพื่อลดการเบี่ยงเบนและเพิ่มความสามารถในการทำซ้ำให้มากที่สุด

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

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

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

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