ระบบบิลด์เป็นส่วนที่สำคัญที่สุดส่วนหนึ่งขององค์กรด้านวิศวกรรม เนื่องจากนักพัฒนาซอฟต์แวร์แต่ละคนอาจโต้ตอบกับระบบนี้หลายสิบหรือหลายร้อยครั้งต่อวัน ระบบบิลด์ที่มีฟีเจอร์ครบถ้วนมีความจำเป็นเพื่อให้การทำงานของนักพัฒนาซอฟต์แวร์มีประสิทธิภาพมากขึ้นเมื่อองค์กรขยายขนาด สำหรับนักพัฒนาซอฟต์แวร์แต่ละคน การคอมไพล์โค้ดเป็นเรื่องง่าย ดังนั้นระบบบิลด์จึงอาจดูเหมือนมากเกินความจำเป็น แต่ในระดับที่ใหญ่ขึ้น การมีระบบบิลด์จะช่วยจัดการทรัพยากร Dependency ที่ใช้ร่วมกัน เช่น การพึ่งพาฐานของโค้ดส่วนอื่น หรือทรัพยากรภายนอก เช่น ไลบรารี ระบบบิลด์ช่วยให้มั่นใจว่าคุณมีทุกสิ่งที่จำเป็นในการบิลด์โค้ดก่อนที่จะเริ่มบิลด์ นอกจากนี้ ระบบบิลด์ยังช่วยเพิ่มความเร็วในการทำงานเมื่อตั้งค่าให้ช่วยวิศวกรแชร์ทรัพยากรและผลลัพธ์
ส่วนนี้จะกล่าวถึงประวัติและข้อมูลพื้นฐานบางส่วนเกี่ยวกับการบิลด์และระบบบิลด์ รวมถึงการตัดสินใจด้านการออกแบบที่นำไปสู่การสร้าง Bazel หากคุณคุ้นเคยกับระบบบิลด์ที่อิงตามอาร์ติแฟกต์ เช่น Bazel, Buck และ Pants คุณสามารถข้ามส่วนนี้ไปได้ แต่ส่วนนี้เป็นภาพรวมที่เป็นประโยชน์ในการทำความเข้าใจว่าเหตุใดระบบบิลด์ที่อิงตามอาร์ติแฟกต์จึงยอดเยี่ยมในการช่วยให้ขยายขนาดได้
-
หากคุณยังไม่เคยใช้ระบบบิลด์มาก่อน ให้เริ่มต้นที่นี่ หน้านี้จะอธิบายเหตุผลที่คุณควรใช้ระบบบิลด์ และเหตุผลที่คอมไพเลอร์และสคริปต์บิลด์ไม่ใช่ตัวเลือกที่ดีที่สุดเมื่อองค์กรของคุณเริ่มขยายขนาดเกินกว่านักพัฒนาซอฟต์แวร์ 2-3 คน
-
หน้านี้จะกล่าวถึงระบบบิลด์ที่อิงตามงาน (เช่น Make, Maven และ Gradle) และความท้าทายบางอย่างของระบบเหล่านี้
-
หน้านี้จะกล่าวถึงระบบบิลด์ที่อิงตามอาร์ติแฟกต์เพื่อตอบสนองต่อปัญหาของระบบบิลด์ที่อิงตามงาน
-
หน้านี้จะกล่าวถึงบิลด์แบบกระจาย หรือบิลด์ที่ดำเนินการนอกเครื่องในพื้นที่ ซึ่งต้องใช้โครงสร้างพื้นฐานที่แข็งแกร่งมากขึ้นเพื่อแชร์ทรัพยากรและผลลัพธ์ของบิลด์ (และเป็นที่มาของเวทมนตร์ที่แท้จริง)
-
หน้านี้จะกล่าวถึงความซับซ้อนบางอย่างของการพึ่งพาในระดับใหญ่และกลยุทธ์ในการรับมือกับความซับซ้อนเหล่านั้น