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