กล้อง Bazel

รายงานปัญหา ดูแหล่งที่มา

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

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

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

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

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

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

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

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

ความสามารถหลักของ 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 sandwich"
  4. โดยกฎจะต้องพร้อมใช้งานจากระยะไกล ซึ่งในทางปฏิบัติหมายความว่ากำหนดค่าได้โดยใช้กลไก toolchains
  5. โดยกฎ (และ Bazel) จะต้องอินเทอร์เฟซด้วย IDE ที่ใช้กันอย่างแพร่หลายสำหรับภาษานั้นๆ (หากมี)
  6. กฎต่างๆ จะต้องมีเอกสารที่ละเอียดและใช้งานได้ มีเนื้อหาแนะนำสำหรับผู้ใช้ใหม่ เอกสารที่ครบถ้วนสำหรับผู้ใช้ที่มีความเชี่ยวชาญ

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

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