กล้อง 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 จะมอบมูลค่าให้กับสมาชิกของชุมชนภาษานั้นๆ อย่างเต็มที่