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