เครื่องมือการรวมอย่างต่อเนื่องมีประโยชน์อะไรบ้างในโครงการเดี่ยว


18

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

ฉันคิดว่าคุณค่าของการควบคุมเวอร์ชันยังคงชัดเจน แต่ฉันต้องสร้างหลังจากคอมมิชชันทุกครั้งเพราะฉันเพิ่งจะสร้างบนเครื่องของฉันและไม่มีใครทำอะไร

คำตอบ:


12

ฉันวางแผนที่จะใช้เครื่องมือการรวมอย่างต่อเนื่องในโครงการและฉันเป็นนักพัฒนาที่ไม่เหมือนใคร ความต้องการมาเพราะ

  1. เป้าหมายหนึ่งคือการทำให้ข้ามแพลตฟอร์มและการมีเครื่องมือการรวมช่วยให้คุณตรวจสอบแอพของคุณบนพื้นฐานหลายแพลตฟอร์มเมื่อคุณผลักดันการเปลี่ยนแปลงของคุณในพื้นที่เก็บข้อมูลการรวม (หรือศูนย์กลางหนึ่งหรือสิ่งใดสิ่งหนึ่งที่ จะถูกใช้เป็นเผด็จการ)
  2. โครงการสร้างขึ้นในระยะยาวดังนั้นฉันจะต้องทำงานกับทีมในภายหลัง ฉันไม่ได้วางแผนที่จะรับสมัครคนจนถึงปี 2012 ดังนั้นสิ่งที่บูรณาการอย่างต่อเนื่องสามารถรอสักครู่จนถึง 1 กลายเป็นลำดับความสำคัญ

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

เกี่ยวกับระยะเวลาการสร้างฉันใช้ Mercurial และตั้งค่าที่เก็บข้อมูลการรวมที่ไม่ใช่ที่เก็บข้อมูลการทำงานเป็นทีม ดังนั้นผลักดันการเปลี่ยนแปลงใน repo การทำงานเป็นทีมจนกว่าฉันจะรู้สึกว่าถึงเวลาที่จะทำให้ระบบการรวมพยายามที่จะสร้าง จากนั้นฉันผลักจาก repo การทำงานเป็นทีมไปยัง repo การรวมและที่จะก่อให้เกิดการสร้าง จากนั้นฉันก็เพิ่มสคริปต์ที่จะดึง repo การทำงานเป็นทีมใน repo การรวมหนึ่งครั้งในแต่ละวัน

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

สำหรับโครงการบ้านหนึ่งครั้งต่อวันอาจจะ "มักจะ" อยู่แล้ว ความต้องการหลักคืออนุญาตให้ผู้ใช้บังคับให้เปิดใช้งานบิลด์


20

หลังจากที่มีการไตร่ตรองสั้น ๆ ผมขอแนะนำว่ามันก็อาจจะมากขึ้นที่สำคัญสำหรับนักพัฒนาเดี่ยวกว่าสำหรับทีม

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

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

อันที่จริงตอนนี้เมื่อคุณทำไฟล์ | โครงการใหม่คุณควรรวมถึงการสร้างหรือเพิ่มในพื้นที่เก็บข้อมูลของคุณและตั้งค่าสคริปต์ CI build และการตั้งค่าการปรับใช้


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


10
+1 ในฐานะนักพัฒนาเดี่ยวคุณมีความเสี่ยงต่อปัญหา 'ใช้กับเครื่องของฉัน'
jk

Downvotes ที่ไม่มีเหตุผลไม่เป็นประโยชน์ - มีอะไรผิดปกติกับข้างต้นหรือไม่
Murph

+1 ฉันต้องเผชิญกับสถานการณ์ที่คล้ายกันมากที่นี่ - โครงการจำนวนมากที่มีขนาดเล็กพอที่จะได้รับการบำรุงรักษาโดยผู้พัฒนาเพียงคนเดียวและโครงการใหญ่หนึ่งโครงการที่ดูแลโดยทีม สำหรับโครงการขนาดเล็กเรามักประสบกับปัญหาบางคนลืมที่จะตรวจสอบในซอร์สโค้ดไฟล์เฉพาะ สำหรับโครงการขนาดใหญ่สิ่งนี้ไม่เคยเป็นปัญหาเพราะถ้าหนึ่งในทีมลืมเพิ่มไฟล์ใหม่ไปยังแหล่งควบคุมอื่น ๆ จะบ่นทันทีเกี่ยวกับเรื่องนี้ ฉันควรเพิ่มเรากำลังจะติดตั้งเซิร์ฟเวอร์ CI ในเดือนหน้า - เริ่มต้นด้วยโครงการขนาดเล็ก!
Doc Brown

7

เมื่อฉันเป็นคนเดียวที่ทำฉันเพิ่งสร้างและทดสอบก่อนที่จะกระทำจริง ฉันมักจะใช้เป้าหมาย makefile เช่น:

make sense

การกำหนดค่า, สร้าง, รันการทดสอบทั้งหมด (valgrind ระวัง), วิ่งขุย ฯลฯ อย่างที่ฉันรู้ว่าฉันจะเป็นคนเดียวที่ผลักฉันไม่ต้องการพลังของสิ่งที่ชอบฮัดสัน

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

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

นอกจากนี้หากคุณกำลังดูแลโครงการที่เคลื่อนไหวอย่างรวดเร็ว (เช่นชุดของแพตช์ของคุณเองในเคอร์เนล Linux) คุณควรพิจารณาใช้ฮัดสันจริง ๆ แม้ว่าคุณจะ 'โซโล' ในโครงการนั้นก็ตาม นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งถ้าคุณแยกสาขา / ฐานอีกครั้งโดยตรงจากการฉีด


11
ให้แน่ใจว่าจะจำรหัส 'ความรู้สึก' make: don't know how to make sense. Stopเป้าหมายของคุณมิฉะนั้นคุณอาจได้รับ โอ๊ะ!
Alan Pearce

@Alan - พวกเขาไปและทำลายความสนุกของเราในรุ่นที่ใหม่กว่า (อย่างน้อย GNU ทำ) .. ตอนนี้คุณเพิ่งได้รับ "ทำ: *** ไม่มีกฎที่จะทำให้เป้าหมายเป็นไปได้" หยุด "
Tim Post

1
แนะนำให้คุณเปลี่ยนเป็น FreeBSD :)
Alan Pearce

1

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

หากปฏิบัติตามอย่างถูกต้อง (นั่นคือคุณจะไม่ข้ามการทดสอบและคุณต้องแน่ใจว่ามันสร้างขึ้นทุกครั้งที่คุณส่งมอบ) CI บังคับให้คุณยึดมั่นในมาตรฐานคุณภาพที่สูงกว่าที่คุณต้องการ


ฉันจัดการเพื่อรันแอปพลิเคชันฐานข้อมูลที่ประสบความสำเร็จโดยไม่มีค่าใช้จ่ายใด ๆ ของเซิร์ฟเวอร์ CI ต้องใช้วินัยเล็กน้อยในบางพื้นที่ แต่น้อยกว่าค่าโสหุ้ยในการตั้งค่าทั้งหมดนั้น
wobbily_col

0

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

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

ฉันมีเครื่อง VMWare แยกต่างหากบนแล็ปท็อปเครื่องเดียวกันกับที่สร้างรหัสสำหรับฉันที่จะทำเช่นนี้ฉันเพิ่งได้รับอิมเมจ Turnkey Linux VMWare อิมเมจและติดตั้ง jenkins โดยใช้ apt-get และทำการเปลี่ยนแปลงการตั้งค่าเล็กน้อย

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