แบบแผ่นใส

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

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

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

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

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

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

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

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

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

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

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

การแสดงชุมชนภาษา

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

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

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

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

  1. กฎต้องรองรับการสร้างและทดสอบภาษาที่มีประสิทธิภาพ รวมถึงการครอบคลุมของโค้ด
  2. กฎดังกล่าวต้องเชื่อมต่อด้วย "ตัวจัดการแพ็กเกจ" ที่ใช้กันอย่างแพร่หลาย สําหรับภาษา (เช่น Maven สําหรับ Java) และสนับสนุนเส้นทางการย้ายข้อมูลเพิ่มเติมจากระบบบิวด์ที่ใช้กันอย่างแพร่หลาย
  3. กฎดังกล่าวต้องขยายและใช้งานร่วมกันได้หลังจากทําตามหลักการ "Bazel sandwich"
  4. กฎจะต้องดําเนินการจากระยะไกลได้ ในทางปฏิบัติหมายความว่าสามารถกําหนดค่าโดยใช้กลไก toolchains
  5. กฎ (และ Bazel) ต้องอินเทอร์เฟซด้วย IDE ที่ใช้กันอย่างแพร่หลายสําหรับภาษา หากมี
  6. กฎดังกล่าวต้องมีเอกสารอย่างละเอียดและใช้ได้พร้อมกับเนื้อหาแนะนําสําหรับผู้ใช้ใหม่ เอกสารที่ครอบคลุมสําหรับผู้ใช้ผู้เชี่ยวชาญ

แต่ละรายการเป็นสิ่งที่จําเป็นและต่างก็นําส่งความสามารถของคู่แข่งสําหรับระบบนิเวศของ Bazel เท่านั้น

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