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