กล้อง Bazel

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

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

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

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

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

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

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

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

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

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

การให้บริการแก่ชุมชนที่ใช้ภาษาต่างๆ

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

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

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

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

  1. กฎต้องรองรับการสร้างและการทดสอบที่มีประสิทธิภาพสำหรับภาษา รวมถึงความครอบคลุมของโค้ด

  2. กฎต้องเชื่อมต่อกับ "ตัวจัดการแพ็กเกจ" ที่ใช้กันอย่างแพร่หลายสำหรับ ภาษา (เช่น Maven สำหรับ Java) และรองรับเส้นทางการย้ายข้อมูลแบบเพิ่มทีละรายการ จากระบบบิลด์อื่นๆ ที่ใช้กันอย่างแพร่หลาย

  3. กฎต้องขยายและทำงานร่วมกันได้ตามหลักการ"แซนวิช Bazel"

  4. กฎต้องพร้อมสำหรับการดำเนินการจากระยะไกล ในทางปฏิบัติแล้ว สิ่งนี้หมายความว่า กำหนดค่าได้โดยใช้กลไกชุดเครื่องมือ

  5. กฎ (และ Bazel) ต้องเชื่อมต่อกับ IDE ที่ใช้กันอย่างแพร่หลายสำหรับภาษา หากมี

  6. กฎต้องมีเอกสารประกอบที่ละเอียดและใช้งานได้ พร้อมเนื้อหาเบื้องต้น สำหรับผู้ใช้ใหม่ และเอกสารที่ครอบคลุมสำหรับผู้ใช้ผู้เชี่ยวชาญ

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

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