กล้อง Bazel

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

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

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

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

เราเชื่อว่า Bazel มีศักยภาพที่จะบรรลุวิสัยทัศน์นี้

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

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

เลเยอร์นามธรรมของ 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 ก็มอบคุณค่าให้แก่สมาชิกในชุมชนภาษานั้นอย่างเต็มที่