คำถามติดแท็ก continuous-integration

ในวิศวกรรมซอฟต์แวร์การรวมอย่างต่อเนื่อง (CI) ใช้การสร้างอย่างต่อเนื่องและการทดสอบอัตโนมัติของผลิตภัณฑ์ซอฟต์แวร์เต็มรูปแบบตามกำหนดเวลาที่พบบ่อย อย่างน้อยวันละครั้งบ่อยครั้งหลายครั้งต่อวันและบางครั้งก็บ่อยเหมือนทุกครั้งหลังจากเช็คอินกับระบบควบคุมเวอร์ชัน

23
วิธีการขอโทษเมื่อคุณทำลายสิ่งก่อสร้างตอนกลางคืน [ปิด]
ความมุ่งมั่นครั้งแรกของฉันในโครงการของฉันส่งผลให้งานสร้างในยามค่ำคืนถูกทำลายและผู้คนต่างอยู่เหนือฉันขณะที่เราใกล้จะวางจำหน่าย ฉันต้องการส่งอีเมลขอโทษที่ควรฟังด้วยความจริงใจและในขณะเดียวกันก็บอกว่านี่เป็นความมุ่งมั่นครั้งแรกของฉันและนี่จะไม่ถูกทำซ้ำอีกต่อไป การเป็นผู้พูดภาษาอังกฤษที่ไม่ใช่เจ้าของภาษาฉันมีปัญหาในการหาคำที่ถูกต้อง มีคนช่วยได้ไหม

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

13
ไปที่สาขาหรือไม่ที่จะแตกสาขา?
เมื่อไม่นานมานี้เวิร์กโฟลว์การพัฒนาของฉันมีดังต่อไปนี้: รับคุณสมบัติจากเจ้าของผลิตภัณฑ์ ทำสาขา (หากคุณลักษณะมากกว่า 1 วัน) นำไปใช้ในสาขา ผสานการเปลี่ยนแปลงจากสาขาหลักไปยังสาขาของฉัน (เพื่อลดความขัดแย้งระหว่างการรวมย้อนหลัง) ผสานสาขาของฉันกลับไปที่สาขาหลัก บางครั้งมีปัญหาในการรวม แต่โดยทั่วไปฉันชอบมัน แต่เมื่อเร็ว ๆ นี้ฉันเห็นผู้ติดตามความคิดมากขึ้นเรื่อย ๆ ที่จะไม่สร้างสาขาเพราะมันยากที่จะฝึกการรวมกลุ่มอย่างต่อเนื่องการจัดส่งต่อเนื่อง ฯลฯ และฟังดูตลกโดยเฉพาะจากผู้ที่มีพื้นหลัง VCS กระจาย Git, Mercurial ฯลฯ ดังนั้นคำถามคือเราควรใช้สาขาทุกวันนี้ไหม?

7
แสดงความคิดเห็นสิ่งที่ต้องทำด้วยกำหนดเวลา?
พื้นหลัง ฉันกำลังทำงานในทีมที่ต้องการปรับใช้การปรับใช้แบบไม่ต้องหยุดทำงาน เราวางแผนที่จะใช้กลยุทธ์การปรับใช้สีน้ำเงิน / เขียวเพื่อให้บรรลุเป้าหมายนี้ สิ่งหนึ่งที่ฉันตระหนักในการทำวิจัยคือความซับซ้อนของการเปลี่ยนแปลงฐานข้อมูล การดำเนินการอย่างง่ายเช่นการเปลี่ยนชื่อคอลัมน์อาจใช้เวลา3 รอบเต็มจนกว่าจะเสร็จสมบูรณ์! สำหรับฉันดูเหมือนว่าการมีการเปลี่ยนแปลงอย่างเต็มรูปแบบนั้นต้องใช้เวลาหลายรอบการเปิดตัวทำให้เกิดข้อผิดพลาดของมนุษย์ได้มาก ในบทความที่เชื่อมโยงมันแสดงให้เห็นว่าการเปลี่ยนแปลงรหัสมีความจำเป็นสำหรับ 2 รุ่นและการโยกย้ายฐานข้อมูลเป็นสิ่งจำเป็นสำหรับ 3 รุ่น สิ่งที่ฉันกำลังมองหา ในปัจจุบันหากเราต้องการจำบางสิ่งเราสามารถสร้างตั๋วในระบบการจัดการปัญหาของเราซึ่งสร้างความยุ่งเหยิงและอาจถูกย้ายไปที่การวิ่งในภายหลังหรือการค้างโดยผู้บริหาร หรือเราสามารถสร้างความคิดเห็นสิ่งที่ต้องทำซึ่งอาจจะถูกลืมไปโดยสิ้นเชิง สิ่งที่ฉันกำลังมองหาคือวิธีที่ความคิดเห็นของ TODO สามารถกำหนดเส้นตายได้และระบบการรวมอย่างต่อเนื่องของเรา (ไม่แน่ใจว่าเราจะใช้ในปัจจุบัน) จะปฏิเสธการสร้างหากกำหนดเวลานี้หมดอายุ ตัวอย่างเช่นถ้าเราเปลี่ยนชื่อคอลัมน์เราสามารถสร้างการโยกย้ายครั้งแรกสำหรับมันและจากนั้นสองความคิดเห็นสิ่งที่ต้องทำเพื่อให้แน่ใจว่าการย้ายสองที่เหลือจะถูกสร้างขึ้น: // TODO by v55: Create migration to move constraints to new column, remove references to old column in app // TODO by v56: Create migration to drop …

6
ทำการทดสอบ 65.000.000.000 ที่จะเรียกใช้
ฉันถูกถามเกี่ยวกับวิธีเรียกใช้ชุดทดสอบ 65.000.000.000 และฉันสงสัยว่าเป็นเรื่องปกติหรือไม่ที่จะมีโครงการที่มีการทดสอบจำนวนมาก คุณเคยทำงานในโครงการที่มีคุณสมบัตินี้หรือไม่?

9
วิธีดูแลรักษาซอฟต์แวร์รุ่นเดียวกันที่แตกต่างและกำหนดเองสำหรับลูกค้าหลายราย
เรามีลูกค้าหลายรายที่มีความต้องการที่แตกต่างกัน แม้ว่าซอฟต์แวร์ของเราจะได้รับการทำให้เป็นโมดูลในระดับหนึ่ง แต่เกือบจะแน่นอนว่าเราจำเป็นต้องปรับตรรกะทางธุรกิจของโมดูลทุกตัวที่นี่และมีเล็กน้อยสำหรับลูกค้าแต่ละราย การเปลี่ยนแปลงอาจเล็กเกินไปที่จะปรับแยกโมดูลเป็นโมดูล (ทางกายภาพ) ที่แตกต่างกันสำหรับลูกค้าแต่ละคนฉันกลัวว่าปัญหาเกี่ยวกับการสร้างความสับสนวุ่นวายในการเชื่อมโยง แต่การเปลี่ยนแปลงเหล่านั้นใหญ่เกินไปและมากเกินไปที่จะกำหนดค่าโดยสวิตช์ในไฟล์การกำหนดค่าบางอย่างซึ่งจะนำไปสู่ปัญหาระหว่างการปรับใช้และอาจมีปัญหาในการสนับสนุนมากมายโดยเฉพาะอย่างยิ่งกับผู้ดูแลระบบชนิดทิงเกอร์ ฉันต้องการให้ระบบการสร้างสร้างหลายบิลด์สำหรับลูกค้าแต่ละรายซึ่งมีการเปลี่ยนแปลงในโมดูลทางกายภาพเดี่ยวในรุ่นพิเศษ ดังนั้นฉันมีคำถาม: คุณจะแนะนำให้ระบบ build สร้างหลาย build หรือไม่? ฉันควรจัดเก็บการปรับแต่งที่แตกต่างกันในการควบคุมแหล่งข้อมูลโดยเฉพาะอย่างยิ่ง svn อย่างไร

9
เราจะหลีกเลี่ยงการพัฒนาที่ขับเคลื่อนด้วย CI ได้อย่างไร?
ฉันกำลังทำงานในโครงการโอเพนซอร์ซที่มุ่งเน้นการวิจัยขนาดใหญ่มากโดยมีผู้สนับสนุนรายอื่นเป็นจำนวนมาก เนื่องจากโครงการนี้ค่อนข้างใหญ่สมาคม (ประกอบด้วยพนักงานเต็มเวลาสองคนและสมาชิกไม่กี่คน) อยู่ในความดูแลของโครงการการรวมกลุ่มอย่างต่อเนื่อง (CI) ฯลฯ พวกเขาไม่มีเวลาสำหรับการรวมกลุ่มจากภายนอก ผลงานแม้ว่า โครงการประกอบด้วยโครงร่าง "แกนกลาง" ซึ่งมีรหัสครึ่งหนึ่งของรหัสครึ่งหนึ่งกลุ่มของ "ปลั๊กอิน" ซึ่งได้รับการบำรุงรักษาโดยสมาคมและปลั๊กอินภายนอกหลายแห่งซึ่งส่วนใหญ่เราไม่ได้ทำ ไม่รู้ตัวด้วยซ้ำ ปัจจุบัน CI ของเราสร้างหลักและปลั๊กอินบำรุงรักษา หนึ่งในปัญหาใหญ่ที่เราเผชิญคือผู้ให้ข้อมูลส่วนใหญ่ (และโดยเฉพาะอย่างยิ่งในบางครั้ง) ไม่สร้าง 90% ของปลั๊กอินที่บำรุงรักษาดังนั้นเมื่อพวกเขาเสนอการเปลี่ยนแปลงโครงสร้างในแกนกลาง (ซึ่งสิ่งเหล่านี้เกิดขึ้นเป็นประจำ) พวกเขาตรวจสอบว่ารหัสรวบรวมในเครื่องของพวกเขาก่อนที่จะทำการร้องขอการดึงบน GitHub รหัสทำงานได้พวกเขามีความสุขและจากนั้น CI ก็เสร็จสิ้นการสร้างและปัญหาเริ่มต้น: การรวบรวมล้มเหลวในปลั๊กอินที่ดูแลรักษาโดยกลุ่มซึ่งผู้มีส่วนร่วมไม่ได้สร้างบนเครื่องของเขา / เธอ ปลั๊กอินนั้นอาจมีการพึ่งพาไลบรารีของบุคคลที่สามเช่นCUDAเป็นต้นและผู้ใช้ไม่ต้องการไม่ทราบวิธีการหรือไม่สามารถทำได้ด้วยเหตุผลด้านฮาร์ดแวร์รวบรวมปลั๊กอินที่ใช้งานไม่ได้ ดังนั้น - ทั้ง PR ยังคงโฆษณาอยู่ในบริเวณขอบของPRs ที่ไม่เคยถูกผสาน- หรือผู้มีส่วนร่วม greps ตัวแปรที่ถูกเปลี่ยนชื่อในแหล่งที่มาของปลั๊กอินที่เสียหาย, เปลี่ยนรหัส, กดรหัสบนสาขาของเขา / เธอรอ CI ที่จะทำการรวบรวมให้เสร็จสิ้นมักจะได้รับข้อผิดพลาดมากขึ้นและทำซ้ำกระบวนการจนกว่า CI จะมีความสุข - …

16
โปรแกรมเมอร์ควรแก้ไขงานสร้างที่ล้มเหลวของคนอื่นหรือไม่? [ปิด]
โปรแกรมเมอร์คนหนึ่งมอบหมายงานบางอย่างให้กับที่เก็บ SVN จากนั้นกลับบ้าน หลังจากที่เขาจากไปการสร้างอัตโนมัติของฮัดสันล้มเหลว โปรแกรมเมอร์คนอื่นเห็นสิ่งนี้และหลังจากตรวจสอบการเปลี่ยนแปลงรหัสตรวจพบว่าปัญหาคือการขาดงานของหนึ่งไลบรารี เขาเพิ่มไลบรารีนี้ไปยัง SVN และการสร้างถัดไปเสร็จสมบูรณ์ โปรแกรมเมอร์คนที่สองทำสิ่งที่ถูกต้องหรือควรรอจนกระทั่งโปรแกรมเมอร์คนแรกแก้ไขปัญหาได้หรือไม่

8
การคืนค่าการคอมมิตโดยอัตโนมัติที่ล้มเหลวในการสร้าง
เพื่อนร่วมงานของฉันบอกฉันว่าเขากำลังคิดที่จะทำให้เซิร์ฟเวอร์ CI ของเรากลับไปใช้สิ่งที่ล้มเหลวในการสร้างดังนั้นHEADin masterจึงมีความเสถียรอยู่เสมอ (เช่นเดียวกับที่ผ่านการสร้างอย่างน้อย) นี่เป็นวิธีปฏิบัติที่ดีที่สุดหรืออาจเป็นปัญหามากกว่าแค่ปล่อยให้masterแตกจนกว่าผู้พัฒนาจะแก้ไขหรือไม่ ความคิดของฉันคือการคืนค่าการคอมมิชชันจะทำให้งานการอ่านการคอมมิชชันและการแก้ไขซับซ้อนมากขึ้น (นักพัฒนาจะต้องย้อนกลับการแปลงกลับแล้วคอมมิทการแก้ไขซึ่งจะทำให้ยุ่งเหยิงด้วยgit log) และเราควรปล่อยคอมมิต แก้ไข แม้ว่าฉันจะเห็นข้อได้เปรียบบางอย่างในการมีmasterเสถียรภาพ แต่การย้อนกลับมาของความล้มเหลวนี้ไม่ได้ทำให้ฉันมั่นใจ แก้ไข: ไม่สำคัญว่าจะเป็นmasterหรือสาขาการพัฒนาอื่น ๆ แต่คำถามยังคงเหมือนเดิม: ระบบ CI ควรเปลี่ยนการกระทำที่ล้มเหลวในการสร้างหรือไม่? การแก้ไขอื่น (ความยาว): ตกลงเรากำลังใช้gitวิธีแปลก ๆ เราเชื่อว่าแนวคิดของสาขาแตกต่างจาก CI จริงเนื่องจากการทำหน้าที่แยกสาขาคุณออกจากนักพัฒนาคนอื่นและการเปลี่ยนแปลงของพวกเขาและเพิ่มเวลาเมื่อคุณต้องรวบรวมสาขาของคุณอีกครั้งและจัดการกับความขัดแย้งที่อาจเกิดขึ้น หากทุกคนยอมรับmasterความขัดแย้งนี้จะลดลงเหลือน้อยที่สุดและทุกการกระทำผ่านการทดสอบทั้งหมด แน่นอนว่าสิ่งนี้บังคับให้คุณผลักดันเฉพาะความเสถียร (หรือคุณทำลายโครงสร้าง) และตั้งโปรแกรมอย่างระมัดระวังมากขึ้นเพื่อไม่ให้ทำลายความเข้ากันได้ย้อนหลังหรือทำการสลับคุณลักษณะเมื่อแนะนำคุณสมบัติใหม่ มีการแลกเปลี่ยนเมื่อทำ CI ด้วยวิธีนี้ แต่นั่นไม่ได้อยู่ในขอบเขตของคำถาม (ดูคำถามที่เกี่ยวข้องสำหรับเรื่องนี้) หากคุณต้องการฉันอาจตั้งคำถามใหม่: ทีมนักพัฒนาเล็ก ๆ ทำงานร่วมกันในสาขาฟีเจอร์ หากนักพัฒนารายหนึ่งยอมรับสิ่งที่ทำลายการสร้างสำหรับสาขานั้นระบบ CI ควรเปลี่ยนการยอมรับหรือไม่?

9
เป็นการดีหรือไม่ที่จะทำการทดสอบหน่วยใน hooks การควบคุมเวอร์ชัน?
จากมุมมองทางเทคนิคเป็นไปได้ที่จะเพิ่มตะขอกดล่วงหน้า / หลังบางอันซึ่งจะเรียกใช้การทดสอบหน่วยก่อนที่จะอนุญาตให้มีการรวมการมอบหมายเฉพาะกับสาขาเริ่มต้นระยะไกล คำถามของฉันคือ - จะดีกว่าหรือไม่หากทำการทดสอบหน่วยในการสร้างไปป์ไลน์ ฉันรู้ว่าฉันไม่ได้ถูก จำกัด ด้วยสองตัวเลือกนี้ ตัวอย่างเช่นฉันสามารถอนุญาตให้คอมมิชชันทุกสาขาและการทดสอบก่อนที่จะทำการผสานผสานกระทำการซื้อคืน แต่ถ้าคุณต้องเลือกระหว่างโซลูชันสองตัวนี้อย่างแน่นอนคุณจะเลือกอันไหนและด้วยเหตุผลอะไรกันแน่

2
เหตุใด build.number“ การละเมิด” ของการกำหนดเวอร์ชันความหมาย?
ผมได้อธิบายที่เสนอสร้างระบบ (Gradle / Artifactory / เจนกินส์ / Chef) ให้เป็นหนึ่งในสถาปนิกอาวุโสของเราและเขาได้แสดงความคิดเห็นกับฉันว่าฉันเรียงลำดับของการไม่เห็นด้วย แต่ผมไม่ได้มีประสบการณ์มากพอที่จะจริงๆชั่งน้ำหนักใน โครงการนี้สร้างไลบรารี Java (JAR) เป็นสิ่งประดิษฐ์ที่ทีมอื่นนำมาใช้ซ้ำ สำหรับการกำหนดเวอร์ชันฉันต้องการใช้ความหมายของ: <major>.<minor>.<patch> โดยที่patchระบุถึงการแก้ไขบั๊ก / ฉุกเฉินminorระบุรีลีสที่เข้ากันได้แบบย้อนหลังและmajorบ่งชี้ถึงการปรับเปลี่ยนขนาดใหญ่ของ API และ / หรือการเปลี่ยนแปลงที่เข้ากันไม่ได้ด้านหลัง ตราบใดที่การส่งมอบตรงนี้คือสิ่งที่ฉันต้องการ: นักพัฒนาให้รหัสบางส่วน; สิ่งนี้ทริกเกอร์การสร้างสภาพแวดล้อม QA / TEST การทดสอบบางอย่างถูกเรียกใช้ (บางแบบอัตโนมัติและแบบทดสอบด้วยตนเอง) หากการทดสอบทั้งหมดผ่านไปแล้วบิลด์โปรดักชั่นจะเผยแพร่ JAR ไปยัง repo ภายในองค์กรของเรา ณ จุดนี้ JAR ควรได้รับการกำหนดเวอร์ชันอย่างถูกต้องและความคิดของฉันคือการใช้สิ่งbuild.numberที่สร้างขึ้นโดยอัตโนมัติและจัดทำโดยเครื่องมือ CI ของเราเพื่อทำหน้าที่เป็นหมายเลขโปรแกรมแก้ไข ดังนั้นการกำหนดเวอร์ชันจะเป็น: <major>.<minor>.<build.number> อีกครั้งที่build.numberมีให้โดยเครื่องมือ CI สถาปนิกปฏิเสธสิ่งนี้โดยบอกว่าการใช้หมายเลขการสร้าง CI นั้นเป็น "การละเมิด" …

12
DVCSes ไม่สนับสนุนการรวมอย่างต่อเนื่องหรือไม่?
บอกว่ามีทีมนักพัฒนาสิบคนที่คล่องแคล่ว ทุกวันพวกเขาแต่ละคนเลือกงานจากคณะกรรมการดำเนินการเปลี่ยนแปลงหลายอย่างจนกระทั่งพวกเขาเสร็จสิ้นภารกิจ (ภายในสิ้นวัน) นักพัฒนาทั้งหมดเช็คอินกับ trunk โดยตรง (สไตล์ Google ทุกการคอมมิทเป็นตัวเลือกรีลีสโดยใช้ฟีเจอร์สลับ ฯลฯ ) หากพวกเขาใช้ CVS ส่วนกลางเช่น SVN ทุกครั้งที่พวกเขาคอมไพล์เซิร์ฟเวอร์บิลด์จะรวมและทดสอบการเปลี่ยนแปลงกับงานของนักพัฒนาอีกเก้าคน บิลด์เซิร์ฟเวอร์จะทำงานค่อนข้างต่อเนื่องตลอดทั้งวัน แต่ถ้าพวกเขาใช้ DCVS เหมือนคอมไพล์ผู้พัฒนาอาจรอจนกว่าพวกเขาจะทำงานให้เสร็จก่อนที่จะผลักดันคอมมิชชันท้องถิ่นของพวกเขาทั้งหมดไปยังที่เก็บส่วนกลาง การเปลี่ยนแปลงของพวกเขาจะไม่ถูกรวมเข้าด้วยกันจนกระทั่งสิ้นสุดวัน ในสถานการณ์สมมตินี้ทีม SVN จะรวมกันอย่างต่อเนื่องบ่อยขึ้นและค้นพบปัญหาการรวมเร็วกว่าทีม git นี่หมายความว่า DVCS นั้นไม่เหมาะสำหรับทีมต่อเนื่องมากกว่าเครื่องมือรวมศูนย์แบบเก่าหรือไม่ พวกคุณรู้ปัญหานี้ได้อย่างไร

12
มีนักพัฒนากี่คนก่อนที่จะรวมอย่างต่อเนื่องเพื่อให้เกิดประสิทธิภาพ
มีค่าใช้จ่ายที่เกี่ยวข้องกับการบูรณาการอย่างต่อเนื่องเช่นการตั้งค่าการฝึกอบรมใหม่กิจกรรมการรับรู้การหยุดเพื่อแก้ไข "ข้อบกพร่อง" ที่กลายเป็นปัญหาข้อมูลการบังคับใช้รูปแบบการเขียนโปรแกรมที่เกี่ยวข้องเป็นต้น การรวมระบบอย่างต่อเนื่องเป็นสิ่งที่จุดสำหรับตัวเอง? แก้ไข: นี่คือการค้นพบของฉัน การตั้งค่าคือ CruiseControl.Net กับ Nant อ่านจาก VSS หรือ TFS นี่คือสาเหตุบางประการของความล้มเหลวซึ่งไม่มีส่วนเกี่ยวข้องกับการตั้งค่า: ค่าใช้จ่ายในการตรวจสอบ : เวลาที่ใช้ในการตรวจสอบว่าแสงสีแดงเกิดจากความไม่สอดคล้องของตรรกะในรหัสคุณภาพของข้อมูลหรือแหล่งอื่นเช่นปัญหาโครงสร้างพื้นฐาน (เช่นปัญหาเครือข่ายการหมดเวลาอ่านจากการควบคุมแหล่งที่มา ลง ฯลฯ ฯลฯ ) ค่าใช้จ่ายทางการเมืองบนโครงสร้างพื้นฐาน : ฉันถือว่าการตรวจสอบ "โครงสร้างพื้นฐาน" สำหรับแต่ละวิธีในการทดสอบการทำงาน ฉันไม่มีวิธีแก้ไขปัญหาการหมดเวลายกเว้นเพื่อแทนที่การสร้างเซิร์ฟเวอร์ เทปสีแดงเข้ามาขวางทางและไม่มีการแทนที่เซิร์ฟเวอร์ ค่าใช้จ่ายในการแก้ไขการทดสอบหน่วย : ไฟสีแดงเนื่องจากปัญหาคุณภาพข้อมูลอาจเป็นตัวบ่งชี้การทดสอบหน่วยที่เขียนไม่ดี ดังนั้นการทดสอบหน่วยขึ้นอยู่กับข้อมูลจึงถูกเขียนขึ้นใหม่เพื่อลดโอกาสที่แสงสีแดงจะเกิดขึ้นเนื่องจากข้อมูลที่ไม่ดี ในหลายกรณีข้อมูลที่จำเป็นถูกแทรกเข้าไปในสภาพแวดล้อมการทดสอบเพื่อให้สามารถทำการทดสอบหน่วยได้อย่างถูกต้อง มันสมเหตุสมผลที่จะบอกว่าการทำให้ข้อมูลมีความแข็งแกร่งมากขึ้นแล้วการทดสอบจะมีประสิทธิภาพมากขึ้นถ้ามันขึ้นอยู่กับข้อมูลนี้ แน่นอนมันใช้งานได้ดี! ค่าใช้จ่ายของความครอบคลุมเช่นการเขียนการทดสอบหน่วยสำหรับรหัสที่มีอยู่แล้ว : มีปัญหาของการครอบคลุมการทดสอบหน่วย มีวิธีการนับพันที่ไม่มีการทดสอบหน่วย ดังนั้นจำเป็นต้องมีจำนวนวันคนจำนวนมากเพื่อสร้างสิ่งเหล่านั้น เนื่องจากมันจะยากเกินไปที่จะสร้างกรณีธุรกิจจึงมีการตัดสินใจว่าการทดสอบหน่วยจะใช้สำหรับวิธีการสาธารณะใหม่ ๆ ผู้ที่ไม่มีการทดสอบหน่วยถูกเรียกว่า 'อาจเป็นสีแดง' จุดที่น่าสนใจที่นี่คือวิธีการแบบคงที่เป็นจุดที่สงสัยในวิธีที่จะเป็นไปได้ที่จะกำหนดว่าวิธีการแบบคงที่ที่เฉพาะเจาะจงล้มเหลวได้อย่างไร ค่าใช้จ่ายในการเผยแพร่ bespoke : …

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

3
คำอธิบายอย่างง่ายของการรวมอย่างต่อเนื่อง
คุณจะกำหนด Integration Integration อย่างต่อเนื่องและส่วนประกอบ CI เซิร์ฟเวอร์ใดที่ประกอบด้วย ฉันต้องการอธิบายให้คนในแผนกการตลาดทราบว่าการรวมระบบแบบต่อเนื่องคืออะไร พวกเขาเข้าใจการควบคุมแหล่งที่มา - เช่นพวกเขาใช้การโค่นล้ม แต่ฉันต้องการอธิบายให้พวกเขาทราบอย่างถูกต้องว่า CI คืออะไร วิกิพีเดียบทความไม่ถูกต้องกำหนดมันบทความ Martin Fowlerเพียง แต่ช่วยให้ต่อไปนี้ซึ่งเป็นพื้นซ้ำซากตามด้วยคำอธิบายที่คลุมเครือของ 'บูรณาการ': การรวมอย่างต่อเนื่องเป็นวิธีการพัฒนาซอฟต์แวร์ที่สมาชิกของทีมรวมการทำงานของพวกเขาบ่อยครั้งโดยทั่วไปแต่ละคนจะรวมอย่างน้อยทุกวัน - นำไปสู่การรวมหลายต่อวัน การรวมแต่ละครั้งจะถูกตรวจสอบโดยการสร้างอัตโนมัติ (รวมถึงการทดสอบ) เพื่อตรวจหาข้อผิดพลาดการรวมได้เร็วที่สุด อัปเดต : ฉันส่งภาพนี้ให้ฉันพวกเขาไม่สามารถหาภาพที่ง่ายกว่านี้ได้ อัปเดต 2 : ย้อนกลับจากแผนการตลาด (สำหรับช่วงเวลาที่มีคำถาม 3 ข้อ): ฉันชอบคำตอบทั้งหมด 3 ข้อ - ด้วยเหตุผลที่แตกต่างกัน ฉันรู้สึกเหมือนเข้าสู่ระบบเพียงเพื่อขอบคุณพวกเขาทั้งหมด! เห็นได้ชัดว่าเขาไม่สามารถ - ขอบคุณในนามของเขา :) อัปเดต 3 : ฉันรู้แล้วว่าได้อ่านบทความ Wikipedia ว่ามันมีหลักการซึ่งเมื่อคุณใช้หัวเรื่องเป็นรายการที่ค่อนข้างดี: …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.