กล้อง Bazel

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

  • วิศวกรสามารถใช้ประโยชน์จากพื้นฐานการสร้างได้ นักพัฒนาซอฟต์แวร์มุ่งเน้นไปที่กระบวนการสร้างสรรค์ในการเขียนโค้ด เนื่องจากกระบวนการสร้างและทดสอบแบบกลไกได้รับการแก้ไขแล้ว เมื่อปรับแต่งระบบบิลด์เพื่อรองรับภาษาใหม่หรือความต้องการเฉพาะขององค์กร ผู้ใช้จะมุ่งเน้นไปที่แง่มุมของความสามารถในการขยายที่เฉพาะเจาะจงกับกรณีการใช้งานของตนเอง โดยไม่ต้องสร้างระบบพื้นฐานขึ้นมาใหม่

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

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

เราเชื่อว่า Bazel มีศักยภาพที่จะทำให้วิสัยทัศน์นี้เป็นจริงได้

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

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

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

ความสามารถหลักของ Bazel

  1. Bazel รองรับการสร้างและทดสอบหลายภาษาและหลายแพลตฟอร์ม คุณสามารถเรียกใช้คำสั่งเดียวเพื่อสร้างและทดสอบทั้ง Source Tree ไม่ว่าคุณจะกำหนดเป้าหมายภาษาและแพลตฟอร์มใดก็ตาม
  2. บิลด์ของ Bazel รวดเร็วและถูกต้อง การเรียกใช้บิลด์และการทดสอบทุกครั้งจะเป็นแบบทีละน้อยในเครื่องของนักพัฒนาซอฟต์แวร์และใน CI
  3. Bazel มีภาษาที่สม่ำเสมอและขยายได้ เพื่อกำหนดบิลด์สำหรับภาษาหรือแพลตฟอร์มใดก็ได้
  4. Bazel ช่วยให้บิลด์ของคุณปรับขนาดได้ โดยการเชื่อมต่อกับบริการการดำเนินการจากระยะไกลและการแคช
  5. Bazel ทำงานได้ในแพลตฟอร์มการพัฒนาหลักๆ ทั้งหมด (Linux, MacOS และ Windows)
  6. เรายอมรับว่าการนำ Bazel ไปใช้ต้องใช้ความพยายาม แต่การนำไปใช้ทีละน้อย ก็เป็นไปได้ Bazel มีอินเทอร์เฟซกับเครื่องมือมาตรฐานโดยพฤตินัยสำหรับภาษา/แพลตฟอร์มที่กำหนด

การให้บริการชุมชนภาษา

วิศวกรรมซอฟต์แวร์พัฒนาขึ้นในบริบทของชุมชนภาษา ซึ่งโดยทั่วไปจะเป็นกลุ่มคนที่จัดระเบียบตนเองซึ่งใช้เครื่องมือและแนวทางปฏิบัติร่วมกัน

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

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

ข้อกำหนดของชุดกฎที่ดี

  1. กฎต้องรองรับการสร้างและการทดสอบ ที่มีประสิทธิภาพสำหรับภาษา รวมถึงการครอบคลุมของโค้ด
  2. กฎต้องมีอินเทอร์เฟซกับ "เครื่องมือจัดการแพ็กเกจ" ที่ใช้กันอย่างแพร่หลาย สำหรับภาษา (เช่น Maven สำหรับ Java) และรองรับเส้นทางการย้ายข้อมูลทีละน้อยจากระบบบิลด์อื่นๆ ที่ใช้กันอย่างแพร่หลาย
  3. กฎต้องขยายได้และทำงานร่วมกันได้ ตาม "แซนวิช Bazel" หลักการ
  4. กฎต้องพร้อมสำหรับการดำเนินการจากระยะไกล ในทางปฏิบัติ หมายความว่า กำหนดค่าได้โดยใช้กลไก Toolchain
  5. กฎ (และ Bazel) ต้องมีอินเทอร์เฟซกับ IDE ที่ใช้กันอย่างแพร่หลาย สำหรับภาษา หากมี
  6. กฎต้องมีเอกสารประกอบที่ละเอียดและใช้งานได้ พร้อมเนื้อหาเบื้องต้นสำหรับผู้ใช้ใหม่ และเอกสารที่ครอบคลุมสำหรับผู้ใช้ผู้เชี่ยวชาญ

แต่ละรายการเหล่านี้มีความสำคัญและเมื่อรวมกันแล้วเท่านั้นจึงจะแสดงความสามารถของ Bazel สำหรับระบบนิเวศนั้นๆ ได้

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