นักพัฒนาซอฟต์แวร์ทุกคนสามารถสร้าง ทดสอบ และแพ็กเกจโปรเจ็กต์ทุกขนาดหรือทุกความซับซ้อนได้อย่างมีประสิทธิภาพด้วยเครื่องมือที่นำไปใช้และขยายได้ง่าย
วิศวกรสามารถใช้พื้นฐานการสร้างได้โดยไม่ต้องกังวล นักพัฒนาซอฟต์แวร์มุ่งเน้นไปที่กระบวนการสร้างสรรค์ในการเขียนโค้ด เนื่องจากกระบวนการสร้างและทดสอบแบบกลไกได้รับการแก้ไขแล้ว เมื่อปรับแต่งระบบบิลด์เพื่อรองรับภาษาใหม่หรือความต้องการเฉพาะขององค์กร ผู้ใช้จะมุ่งเน้นไปที่แง่มุมของความสามารถในการขยายที่เฉพาะเจาะจงกับกรณีการใช้งานของตนเอง โดยไม่ต้องคิดค้นระบบพื้นฐานใหม่
วิศวกรสามารถมีส่วนร่วมในโปรเจ็กต์ใดก็ได้โดยง่าย นักพัฒนาซอฟต์แวร์ที่ต้องการเริ่มทำงานในโปรเจ็กต์ใหม่สามารถโคลนโปรเจ็กต์และเรียกใช้บิลด์ได้เลย โดยไม่ต้องกำหนดค่าในเครื่อง เพียงแค่ใช้งานได้เลย ด้วยการดำเนินการจากระยะไกลแบบข้ามแพลตฟอร์ม นักพัฒนาซอฟต์แวร์จึงสามารถทำงานในเครื่องใดก็ได้จากทุกที่และทดสอบการเปลี่ยนแปลงกับแพลตฟอร์มทั้งหมดที่โปรเจ็กต์กำหนดเป้าหมายได้อย่างเต็มที่ วิศวกรสามารถกำหนดค่าบิลด์สำหรับโปรเจ็กต์ใหม่หรือย้ายข้อมูลบิลด์ที่มีอยู่ทีละน้อยได้อย่างรวดเร็ว
โปรเจ็กต์สามารถปรับขนาดให้เข้ากับฐานของโค้ดและทีมทุกขนาดได้ การทดสอบทีละน้อยอย่างรวดเร็วช่วยให้ทีมตรวจสอบการเปลี่ยนแปลงทุกรายการได้อย่างเต็มที่ก่อนที่จะคอมมิต ซึ่งยังคงเป็นจริงแม้ว่าที่เก็บข้อมูลจะขยายใหญ่ขึ้น โปรเจ็กต์จะครอบคลุมที่เก็บข้อมูลหลายรายการ และมีการนำภาษาหลายภาษามาใช้ โครงสร้างพื้นฐานไม่ได้บังคับให้นักพัฒนาซอฟต์แวร์ต้องแลกความครอบคลุมของการทดสอบกับความเร็วในการสร้าง
เราเชื่อว่า Bazel มีศักยภาพที่จะทำให้วิสัยทัศน์นี้เป็นจริงได้
Bazel สร้างขึ้นตั้งแต่ต้นเพื่อให้สามารถสร้างบิลด์ที่ทำซ้ำได้ (ชุดอินพุตที่กำหนดจะสร้างเอาต์พุตเดียวกันเสมอ) และพกพาได้ (สามารถเรียกใช้บิลด์ในเครื่องใดก็ได้โดยไม่ส่งผลต่อเอาต์พุต)
ลักษณะเหล่านี้รองรับการเพิ่มทีละน้อยอย่างปลอดภัย (การสร้างอินพุตที่เปลี่ยนแปลงใหม่เท่านั้นจะไม่ทำให้เกิดความเสี่ยงต่อการเสียหาย) และการกระจายได้ (การดำเนินการบิลด์จะแยกกันและสามารถโอนออกได้) Bazel สามารถทำให้บิลด์รวดเร็วขึ้นได้โดยการลดงานที่จำเป็นในการสร้างบิลด์ที่ถูกต้องและขนานงานนั้นในหลายคอร์และระบบระยะไกล
เลเยอร์การแยกรายละเอียดของ Bazel ซึ่งเป็นคำแนะนำที่เฉพาะเจาะจงกับภาษา แพลตฟอร์ม และ Toolchain ที่ใช้ในภาษาความสามารถในการขยายอย่างง่าย ช่วยให้สามารถนำไปใช้กับบริบทใดก็ได้โดยง่าย
ความสามารถหลักของ Bazel
- Bazel รองรับการสร้างและทดสอบหลายภาษาและหลายแพลตฟอร์ม คุณสามารถเรียกใช้คำสั่งเดียวเพื่อสร้างและทดสอบทั้ง Source Tree ได้ ไม่ว่าคุณจะกำหนดเป้าหมายเป็นภาษาและแพลตฟอร์มใดก็ตาม
- บิลด์ของ Bazel รวดเร็วและถูกต้อง การเรียกใช้บิลด์และการทดสอบทุกครั้งจะเป็นแบบทีละน้อย ทั้งในเครื่องของนักพัฒนาซอฟต์แวร์และใน CI
- Bazel มีภาษาที่สม่ำเสมอและขยายได้ เพื่อกำหนดบิลด์สำหรับภาษาหรือแพลตฟอร์มใดก็ได้
- Bazel ช่วยให้บิลด์ของคุณปรับขนาดได้ โดยการเชื่อมต่อกับบริการการดำเนินการจากระยะไกลและการแคช
- Bazel ทำงานได้ในแพลตฟอร์มการพัฒนาหลักทั้งหมด (Linux, macOS และ Windows)
- เรายอมรับว่าการนำ Bazel ไปใช้ต้องใช้ความพยายาม แต่การนำไปใช้ทีละน้อย ก็เป็นไปได้ Bazel มีอินเทอร์เฟซกับเครื่องมือมาตรฐานโดยพฤตินัยสำหรับภาษา/แพลตฟอร์มที่กำหนด
การให้บริการชุมชนภาษา
วิศวกรรมซอฟต์แวร์พัฒนาขึ้นในบริบทของชุมชนภาษา ซึ่งโดยทั่วไปจะเป็นกลุ่มคนที่จัดระเบียบตนเองซึ่งใช้เครื่องมือและแนวทางปฏิบัติร่วมกัน
กฎของ Bazel คุณภาพสูงที่ผสานรวมกับเวิร์กโฟลว์และข้อกำหนดของชุมชนนั้นๆ ต้องพร้อมใช้งานเพื่อให้เป็นประโยชน์ต่อสมาชิกของชุมชนภาษา
Bazel มุ่งมั่นที่จะขยายได้และเปิดกว้าง รวมถึงรองรับชุดกฎที่ดีสำหรับทุกภาษา
ข้อกำหนดของชุดกฎที่ดี
กฎต้องรองรับการสร้างและการทดสอบ ภาษาอย่างมีประสิทธิภาพ ซึ่งรวมถึงความครอบคลุมของโค้ด
กฎต้องมีอินเทอร์เฟซกับ "เครื่องมือจัดการแพ็กเกจ" ที่ใช้กันอย่างแพร่หลาย สำหรับภาษา (เช่น Maven สำหรับ Java) และรองรับเส้นทางการย้ายข้อมูลทีละน้อยจากระบบบิลด์อื่นๆ ที่ใช้กันอย่างแพร่หลาย
กฎต้องขยายได้และทำงานร่วมกันได้ ตาม"แซนด์วิช Bazel" หลักการ
กฎต้องพร้อมสำหรับการดำเนินการจากระยะไกล ในทางปฏิบัติ หมายความว่า กำหนดค่าได้โดยใช้ กลไก Toolchain
กฎ (และ Bazel) ต้องมีอินเทอร์เฟซกับ IDE ที่ใช้กันอย่างแพร่หลาย สำหรับภาษา หากมี
กฎต้องมีเอกสารที่ละเอียดและใช้งานได้ พร้อมเนื้อหาเบื้องต้นสำหรับผู้ใช้ใหม่ และเอกสารที่ครอบคลุมสำหรับผู้ใช้ผู้เชี่ยวชาญ
แต่ละรายการเหล่านี้มีความสำคัญและเมื่อรวมกันแล้วเท่านั้นจึงจะแสดงความสามารถของ Bazel สำหรับระบบนิเวศนั้นๆ ได้
นอกจากนี้ รายการเหล่านี้ยังเพียงพอโดยรวมด้วย เมื่อดำเนินการทั้งหมดแล้ว Bazel จะมอบมูลค่าให้กับสมาชิกของชุมชนภาษานั้นๆ อย่างเต็มที่