กล้อง Bazel

วันที่ รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

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

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

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

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

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

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

เลเยอร์นามธรรมของ Bazel — วิธีการสำหรับภาษา แพลตฟอร์ม และ Toolchains ที่ติดตั้งใช้งานในภาษาส่วนขยายที่เรียบง่าย ทำให้สามารถ นำไปใช้กับบริบทต่างๆ ได้อย่างง่ายดาย

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

สินค้าแต่ละอย่างเหล่านี้ล้วนเป็นสิ่งจำเป็นและจะร่วมกันส่งมอบใน สำหรับระบบนิเวศเฉพาะนั้นๆ

ปริมาณที่เหลือ มีขนาดค่อนข้างใหญ่พอสมควร เมื่อทำงานครบถ้วนสมบูรณ์แล้ว Bazel มอบคุณค่าให้แก่สมาชิกในชุมชนภาษานั้นๆ