คำถามที่พบบ่อย

รายงานปัญหา ดูแหล่งที่มา Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

หากมีข้อสงสัยหรือต้องการรับการสนับสนุน โปรดดูการขอรับความช่วยเหลือ

Bazel คืออะไร

Bazel เป็นเครื่องมือที่ทำให้การสร้างและทดสอบซอฟต์แวร์เป็นแบบอัตโนมัติ งานบิลด์ที่รองรับ ได้แก่ การเรียกใช้คอมไพเลอร์และลิงเกอร์เพื่อสร้างโปรแกรมและไลบรารีที่เรียกใช้งานได้ รวมถึงการประกอบแพ็กเกจที่พร้อมใช้งานสำหรับ Android, iOS และสภาพแวดล้อมเป้าหมายอื่นๆ Bazel คล้ายกับเครื่องมืออื่นๆ เช่น Make, Ant, Gradle, Buck, Pants และ Maven

Bazel มีอะไรพิเศษ

Bazel ออกแบบมาให้เหมาะกับวิธีพัฒนาซอฟต์แวร์ที่ Google โดยมีฟีเจอร์ต่อไปนี้

  • การรองรับหลายภาษา: Bazel รองรับหลายภาษา และสามารถขยายให้รองรับภาษาโปรแกรมใดก็ได้
  • ภาษาบิลด์ระดับสูง: โปรเจ็กต์จะอธิบายในBUILDภาษา ซึ่งเป็นรูปแบบข้อความที่กระชับที่อธิบายโปรเจ็กต์เป็นชุดของไลบรารี ไบนารี และการทดสอบขนาดเล็กที่เชื่อมต่อกัน ในทางตรงกันข้าม เครื่องมืออย่าง Make จะต้องอธิบายไฟล์แต่ละไฟล์และการเรียกใช้คอมไพเลอร์
  • การรองรับหลายแพลตฟอร์ม: คุณสามารถใช้เครื่องมือและBUILDไฟล์เดียวกันเพื่อสร้างซอฟต์แวร์สำหรับสถาปัตยกรรมที่แตกต่างกัน และแม้แต่แพลตฟอร์มที่แตกต่างกัน ที่ Google เราใช้ Bazel เพื่อสร้างทุกอย่างตั้งแต่แอปพลิเคชันเซิร์ฟเวอร์ที่ทำงานบนระบบในศูนย์ข้อมูลไปจนถึงแอปไคลเอ็นต์ที่ทำงานบนโทรศัพท์มือถือ
  • ความสามารถในการทำซ้ำ: ในไฟล์ BUILD ไลบรารี การทดสอบ และไบนารีแต่ละรายการต้องระบุการอ้างอิงโดยตรงอย่างครบถ้วน Bazel ใช้ข้อมูลการอ้างอิงนี้เพื่อทราบว่าต้องสร้างใหม่เมื่อใดเมื่อคุณทำการเปลี่ยนแปลงไฟล์ต้นฉบับ และทราบว่างานใดที่สามารถเรียกใช้แบบขนานได้ ซึ่งหมายความว่าการสร้างทั้งหมดจะเป็นแบบเพิ่มขึ้นและจะให้ผลลัพธ์เดียวกันเสมอ
  • ปรับขนาดได้: Bazel สามารถจัดการบิลด์ขนาดใหญ่ได้ ที่ Google ไบนารีเซิร์ฟเวอร์มักจะมีไฟล์ต้นฉบับ 100,000 ไฟล์ และบิลด์ที่ไม่มีการเปลี่ยนแปลงไฟล์จะใช้เวลาประมาณ 200 มิลลิวินาที

ทำไม Google ถึงไม่ใช้...

  • Make, Ninja: เครื่องมือเหล่านี้ช่วยให้ควบคุมได้อย่างแม่นยำว่าคำสั่งใดจะเรียกใช้เพื่อสร้างไฟล์ แต่ผู้ใช้ต้องเป็นผู้เขียนกฎที่ถูกต้อง
    • ผู้ใช้โต้ตอบกับ Bazel ในระดับที่สูงขึ้น เช่น Bazel มีกฎในตัวสำหรับ "การทดสอบ Java" "ไบนารี C++" และแนวคิดต่างๆ เช่น "แพลตฟอร์มเป้าหมาย" และ "แพลตฟอร์มโฮสต์" กฎเหล่านี้ได้รับการทดสอบอย่างเข้มงวดเพื่อให้มั่นใจว่าใช้งานได้จริง
  • Ant และ Maven: Ant และ Maven มุ่งเน้นที่ Java เป็นหลัก ในขณะที่ Bazel รองรับหลายภาษา Bazel สนับสนุนการแบ่งฐานโค้ดออกเป็นหน่วยที่เล็กลงและนำกลับมาใช้ใหม่ได้ และจะสร้างเฉพาะหน่วยที่ต้องสร้างใหม่เท่านั้น ซึ่งจะช่วยเร่งการพัฒนาเมื่อทำงานกับฐานของโค้ดขนาดใหญ่
  • Gradle: ไฟล์กำหนดค่าของ Bazel มีโครงสร้างมากกว่าของ Gradle มาก ซึ่งช่วยให้ Bazel เข้าใจได้อย่างชัดเจนว่าแต่ละการดำเนินการทำอะไร ซึ่งจะช่วยให้เกิดการทำงานแบบคู่ขนานมากขึ้นและทำซ้ำได้ดียิ่งขึ้น
  • Pants, Buck: เครื่องมือทั้ง 2 อย่างนี้สร้างและพัฒนาโดยอดีตพนักงาน Google ที่ Twitter และ Foursquare และ Facebook ตามลำดับ แม้ว่าเครื่องมือเหล่านี้จะได้รับการออกแบบตาม Bazel แต่ชุดฟีเจอร์ของเครื่องมือเหล่านี้แตกต่างกัน จึงไม่สามารถใช้แทนกันได้

Bazel มาจากไหน

Bazel เป็นเครื่องมือที่ Google ใช้สร้างซอฟต์แวร์เซิร์ฟเวอร์ภายใน นอกจากนี้ เรายังขยายการให้บริการเพื่อสร้างซอฟต์แวร์อื่นๆ ด้วย เช่น แอปบนอุปกรณ์เคลื่อนที่ (iOS, Android) ที่เชื่อมต่อกับเซิร์ฟเวอร์ของเรา

คุณเขียนเครื่องมือภายในใหม่เป็นโอเพนซอร์สไหม เป็นส้อมไหม

Bazel แชร์โค้ดส่วนใหญ่กับเครื่องมือภายใน และมีการใช้กฎของ Bazel ในการสร้างหลายล้านครั้งทุกวัน

ทำไม Google จึงสร้าง Bazel

เมื่อนานมาแล้ว Google สร้างซอฟต์แวร์โดยใช้ Makefiles ขนาดใหญ่ที่สร้างขึ้น ซึ่งส่งผลให้การสร้างช้าและไม่น่าเชื่อถือ และเริ่มส่งผลต่อประสิทธิภาพการทำงานของนักพัฒนาซอฟต์แวร์และความคล่องตัวของบริษัท Bazel เป็นวิธีแก้ปัญหาเหล่านี้

Bazel ต้องใช้คลัสเตอร์บิลด์ไหม

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

กระบวนการพัฒนาของ Google ทำงานอย่างไร

สำหรับฐานโค้ดของเซิร์ฟเวอร์ เราใช้เวิร์กโฟลว์การพัฒนาต่อไปนี้

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

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

ดูข้อมูลเบื้องหลังเพิ่มเติมเกี่ยวกับกระบวนการพัฒนาที่ Google ได้ในบล็อกเครื่องมือสำหรับวิศวกร

เหตุใดคุณจึงเปิดตัว Bazel

การสร้างซอฟต์แวร์ควรเป็นเรื่องสนุกและง่าย การสร้างที่ช้าและคาดเดาไม่ได้ทำให้การเขียนโปรแกรมไม่สนุก

เหตุใดฉันจึงควรใช้ Bazel

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

ฉันดูตัวอย่างได้ไหม

ได้ ดูตัวอย่างง่ายๆ หรืออ่านซอร์สโค้ดของ Bazel เพื่อดูตัวอย่างที่ซับซ้อนกว่านี้

Bazel เหมาะกับงานใดมากที่สุด

Bazel โดดเด่นในการสร้างและทดสอบโปรเจ็กต์ที่มีคุณสมบัติต่อไปนี้

  • โปรเจ็กต์ที่มีโค้ดเบสขนาดใหญ่
  • โปรเจ็กต์ที่เขียนในภาษาแบบคอมไพล์ (หลายภาษา)
  • โปรเจ็กต์ที่ติดตั้งใช้งานในหลายแพลตฟอร์ม
  • โปรเจ็กต์ที่มีการทดสอบอย่างครอบคลุม

ฉันจะเรียกใช้ Bazel ได้ที่ไหน

Bazel ทำงานบน Linux, macOS (OS X) และ Windows

การพอร์ตไปยังแพลตฟอร์ม UNIX อื่นๆ ควรทำได้ค่อนข้างง่าย ตราบใดที่มี JDK สำหรับแพลตฟอร์มนั้น

ฉันไม่ควรใช้ Bazel สำหรับอะไร

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

ชุดฟีเจอร์ของ Bazel มีความเสถียรเพียงใด

ฟีเจอร์หลัก (กฎ C++, Java และ Shell) มีการใช้งานอย่างกว้างขวางภายใน Google จึงได้รับการทดสอบอย่างละเอียดและมีการเปลี่ยนแปลงน้อยมาก ในทำนองเดียวกัน เราทดสอบ Bazel เวอร์ชันใหม่ในเป้าหมายหลายแสนรายการทุกวันเพื่อค้นหาการถดถอย และเราเผยแพร่เวอร์ชันใหม่หลายครั้งทุกเดือน

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

ไบนารีของ Bazel มีความเสถียรเพียงใด

ภายใน Google เราดูแลให้ Bazel ไม่ค่อยขัดข้อง ซึ่งควรใช้กับฐานโค้ดโอเพนซอร์สของเราด้วย

ฉันจะเริ่มใช้ Bazel ได้อย่างไร

ดูเริ่มต้นใช้งาน

Docker แก้ปัญหาการทำซ้ำไม่ได้ใช่ไหม

Docker ช่วยให้คุณสร้างแซนด์บ็อกซ์ที่มีรุ่นระบบปฏิบัติการที่แน่นอนได้อย่างง่ายดาย เช่น Ubuntu 12.04, Fedora 21 ซึ่งจะช่วยแก้ปัญหาการทำซ้ำสำหรับสภาพแวดล้อมของระบบได้ นั่นคือ "ฉันต้องใช้ /usr/bin/c++ เวอร์ชันใด"

Docker ไม่ได้จัดการการทำซ้ำในส่วนที่เกี่ยวข้องกับการเปลี่ยนแปลงในซอร์สโค้ด การเรียกใช้ Make ด้วย Makefile ที่เขียนไม่สมบูรณ์ภายในคอนเทนเนอร์ Docker อาจยังคงให้ผลลัพธ์ที่คาดเดาไม่ได้

ภายใน Google เราจะตรวจสอบเครื่องมือในการควบคุมแหล่งที่มาเพื่อความสามารถในการทำซ้ำ ด้วยวิธีนี้ เราจึงสามารถตรวจสอบการเปลี่ยนแปลงเครื่องมือ ("อัปเกรด GCC เป็น 4.6.1") ด้วยกลไกเดียวกับการเปลี่ยนแปลงไลบรารีพื้นฐาน ("แก้ไขการตรวจสอบขอบเขตใน OpenSSL")

ฉันจะสร้างไบนารีสำหรับการติดตั้งใช้งานใน Docker ได้ไหม

Bazel ช่วยให้คุณสร้างไบนารีแบบลิงก์แบบคงที่แบบสแตนด์อโลนใน C/C++ และไฟล์ JAR แบบรวมทุกอย่างสำหรับ Java ได้ ซึ่งทำงานโดยมีส่วนที่ต้องพึ่งพาน้อยในระบบ UNIX ปกติ และด้วยเหตุนี้จึงควรติดตั้งภายในคอนเทนเนอร์ Docker ได้อย่างง่ายดาย

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

ฉันสร้างอิมเมจ Docker ด้วย Bazel ได้ไหม

ได้ คุณใช้กฎ Docker ของเราเพื่อสร้างอิมเมจ Docker ที่ทำซ้ำได้

Bazel จะทำให้บิลด์ของฉันทำซ้ำได้โดยอัตโนมัติไหม

สำหรับไบนารี Java และ C++ จะใช้ได้ หากคุณไม่เปลี่ยน Toolchain หากมีขั้นตอนการบิลด์ที่เกี่ยวข้องกับสูตรที่กำหนดเอง (เช่น การเรียกใช้ไบนารีผ่านสคริปต์เชลล์ภายในกฎ) คุณจะต้องระมัดระวังเป็นพิเศษดังนี้

  • อย่าใช้การอ้างอิงที่ไม่ได้ประกาศ การดำเนินการในแซนด์บ็อกซ์ (–spawn_strategy=sandboxed ใน Linux เท่านั้น) จะช่วยค้นหาการขึ้นต่อกันที่ไม่ได้ประกาศ
  • หลีกเลี่ยงการจัดเก็บการประทับเวลาและรหัสผู้ใช้ในไฟล์ที่สร้างขึ้น ไฟล์ ZIP และไฟล์ที่เก็บอื่นๆ มีแนวโน้มที่จะเกิดปัญหานี้เป็นพิเศษ
  • หลีกเลี่ยงการเชื่อมต่อกับเครือข่าย การดำเนินการในแซนด์บ็อกซ์ก็ช่วยได้เช่นกัน
  • หลีกเลี่ยงกระบวนการที่ใช้ตัวเลขสุ่ม โดยเฉพาะอย่างยิ่งการข้ามผ่านพจนานุกรมจะมีการสุ่มในภาษาโปรแกรมหลายภาษา

คุณมีรุ่นไบนารีไหม

ได้ คุณสามารถดูไบนารีรุ่นล่าสุดและอ่านนโยบายการเผยแพร่ของเราได้

ฉันใช้ Eclipse/IntelliJ/XCode Bazel ทำงานร่วมกับ IDE ได้อย่างไร

สำหรับ IntelliJ โปรดดูปลั๊กอิน IntelliJ ที่มี Bazel

สำหรับ XCode โปรดดู Tulsi

สำหรับ Eclipse ให้ดูปลั๊กอิน E4B

สำหรับ IDE อื่นๆ โปรดดูบล็อกโพสต์เกี่ยวกับวิธีการทำงานของปลั๊กอินเหล่านี้

ฉันใช้ Jenkins/CircleCI/TravisCI Bazel ทำงานร่วมกับระบบ CI ได้อย่างไร

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

โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับรหัสออกในคู่มือผู้ใช้

เราคาดหวังฟีเจอร์ใดได้บ้างในอนาคตของ Bazel

ดูแผนการเดินทาง

ฉันใช้ Bazel สำหรับโปรเจ็กต์ INSERT LANGUAGE HERE ได้ไหม

Bazel ขยายได้ ทุกคนสามารถเพิ่มการรองรับภาษาใหม่ๆ ได้ รองรับหลายภาษา โปรดดูรายการคำแนะนำในสารานุกรมการสร้างและรายการที่ครอบคลุมมากขึ้นใน awesomebazel.com

หากต้องการพัฒนาส่วนขยายหรือดูวิธีการทำงานของส่วนขยาย โปรดดูเอกสารประกอบสำหรับการขยาย Bazel

ฉันจะร่วมสนับสนุนโค้ดของ Bazel ได้ไหม

ดูหลักเกณฑ์การมีส่วนร่วม

เหตุใดจึงไม่พัฒนาทุกอย่างแบบเปิด

เรายังคงต้องปรับโครงสร้างอินเทอร์เฟซระหว่างโค้ดสาธารณะใน Bazel กับส่วนขยายภายในของเราอยู่บ่อยครั้ง ซึ่งทำให้การพัฒนาแบบเปิดทำได้ยาก

คุณเปิดซอร์ส Bazel เสร็จแล้วใช่ไหม

การเปิดซอร์ส Bazel ยังอยู่ระหว่างการดำเนินการ โดยเฉพาะอย่างยิ่ง เรายังคงดำเนินการเกี่ยวกับโอเพนซอร์สต่อไปนี้

  • การทดสอบหน่วยและการทดสอบการผสานรวมหลายรายการ (ซึ่งจะช่วยให้การส่งแพตช์ง่ายขึ้น)
  • การผสานรวม IDE อย่างเต็มรูปแบบ

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

มีส่วนใดของ Bazel ที่จะไม่มีวันเป็นโอเพนซอร์สไหม

ได้ โค้ดเบสบางส่วนผสานรวมกับเทคโนโลยีเฉพาะของ Google หรือเรากำลังหาข้ออ้างที่จะกำจัดโค้ดเบส (หรืออาจเป็นการผสมผสานระหว่าง 2 อย่างนี้) โค้ดฐานส่วนนี้ไม่พร้อมให้บริการบน GitHub และอาจจะไม่มีวันพร้อมให้บริการ

ฉันจะติดต่อทีมได้อย่างไร

คุณติดต่อเราได้ที่ bazel-discuss@googlegroups.com

ฉันจะรายงานข้อบกพร่องได้ที่ใด

เปิดปัญหาใน GitHub

ทำไมในโค้ดเบสถึงมีคำว่า "Blaze"

นี่คือชื่อภายในของเครื่องมือ โปรดเรียก Bazel ว่า Bazel

เหตุใดโปรเจ็กต์อื่นๆ ของ Google (Android, Chrome) จึงใช้เครื่องมือบิลด์อื่นๆ

ก่อนที่จะเปิดตัวเวอร์ชันแรก (Alpha) Bazel ไม่พร้อมใช้งานภายนอก ดังนั้นโปรเจ็กต์โอเพนซอร์ส เช่น Chromium และ Android จึงไม่สามารถใช้งานได้ นอกจากนี้ การที่ไม่มีการรองรับ Windows ในตอนแรกยังเป็นปัญหาในการสร้างแอปพลิเคชัน Windows เช่น Chrome เนื่องจากโปรเจ็กต์มีการพัฒนาและมีความเสถียรมากขึ้น Android Open Source Project จึงอยู่ระหว่างการย้ายข้อมูลไปยัง Bazel

"Bazel" ออกเสียงอย่างไร

ออกเสียงเหมือนกับ "basil" (สมุนไพร) ในภาษาอังกฤษแบบสหรัฐอเมริกาว่า "เบ-ซิล" ซึ่งคล้องจองกับ "hazel" IPA: /ˈbeɪzˌəl/