ใครเป็นผู้รับผิดชอบในการตั้งค่าระบบ Build อัตโนมัติ


15

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

ฉันแน่ใจว่าฉันสามารถตั้งค่านี้เอง แต่ฉันไม่ต้องการทำสิ่งนี้ด้วยตัวเองด้วยเหตุผลสองประการ:

  1. ฉันไม่มีเวลาสำหรับมัน ฉันมีความรับผิดชอบของตัวเองซึ่งเกี่ยวข้องกับการตลาดการสื่อสารกับผู้มีส่วนได้เสียอื่น ๆ กับสมาชิกในทีมที่ไม่ได้เป็นส่วนหนึ่งของการพัฒนาสื่อสารกับลูกค้าและการวางแผนโครงการ

  2. ที่สำคัญที่สุดคือฉันเป็นผู้จัดการโครงการ จุดประสงค์ของฉันคือการให้ความเป็นผู้นำไม่ให้ไมโครจัดการทีมพัฒนา

ฉันสามารถทำอะไรเพื่อค้นหาคนในทีมพัฒนาที่จะหลงใหลในการตั้งค่านี้ นักพัฒนาเป็นบุคคลที่เหมาะสมสำหรับงานนี้หรือไม่เนื่องจากต้องใช้ความรู้เกี่ยวกับ Java, Spring และ Google App Engine มีเคล็ดลับอะไรบ้างในการช่วยส่งเสริมการเปลี่ยนแปลงเมื่อกลัวว่าจะมีการเปลี่ยนแปลง


7
มันเป็นข่าวสำหรับฉันว่าบทบาทของผู้จัดการโครงการคือการให้ความเป็นผู้นำ
Yuriy Zubarev

รายการความต้องการความรู้นั้นท้ายที่สุดสิ่งที่นักพัฒนาทุกคนอาจจะมีหรือไม่มีก็ได้และไม่ใช่ผู้พัฒนาที่แน่นอน ขึ้นอยู่กับคุณ
Orbling

5
เกือบ -1 สำหรับการใช้ CVS
โยฮันเนสรูดอล์ฟ

@Johannes - ถ้ามันขึ้นอยู่กับฉันเราจะไม่เป็น อันที่จริงฉันมีการตั้งค่าที่เก็บ SVN ที่ฉันใช้อยู่
jmort253

1
เท่าที่ CVS เป็นเทคโนโลยีเก่า (และห่างไกลจากสิ่งที่ฉันชอบ) มันยังใช้งานได้และหลายแห่งยังคงใช้มัน และถ้ามันทำงานคุณต้องปล่อยมันไว้ในที่ที่เหมาะสม เราใช้มันที่สำนักงานของเราและทำให้งานเสร็จ
Zachary K

คำตอบ:


14

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

ฉันต้องการแนะนำเครื่องมือการรวมอย่างต่อเนื่องเพื่อให้การแก้ไขสารพิษเกิดขึ้นเร็วกว่าในภายหลัง ฉันได้ดู [ฮัดสัน, acme CIS, foo] และพวกเขาทั้งหมดดูเหมือนว่าพวกเขาจะทำงาน ด้วยความจริงที่ว่าเรากำลังใช้ CVS กับ [list caveats ที่นี่] ฉันกำลังมองหาคำแนะนำและฉันจะอยู่กับสิ่งที่ทีมตัดสินใจ

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

กรุณาส่งข้อมูลประจำตัวของฉันเมื่อเรามีสิ่งที่จัดตั้งขึ้น

วิธีการนี้มีประโยชน์ดังต่อไปนี้:

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

ในสถานการณ์จำลองของฉันDaveถูกเลือกเพราะเขามีน้อยที่สุดในจานของเขาและอาจจะไม่มีปัญหาในการตั้งค่าเซิร์ฟเวอร์ใหม่ ขึ้นอยู่กับภาระงานDaveอาจเป็นเพียงคุณ นั่นเป็นอัตวิสัยที่ฉันพูดถึงมัน คุณไม่สามารถพูดได้เสมอnot my job to do thatโดยเฉพาะถ้าคุณเป็นคนเดียวที่มีเวลาทำ หากทุกคนดึงเมื่อเวลาผ่านไปรับรู้เกี่ยวกับความตั้งใจของคุณที่จะช่วยให้มีความสำคัญมากขึ้น การวัดที่เป็นทักษะที่คุณพัฒนาเมื่อเวลาผ่านไป

ไม่ว่าในกรณีใดคุณจะมีเซิร์ฟเวอร์ CIS ภายในวันศุกร์หรือรายละเอียดเกี่ยวกับสาเหตุที่ไม่สามารถทำได้โดยไม่ต้องตั้งค่าเพิ่มเติม


2
ขอบคุณสำหรับข้อมูลและคำแนะนำ ฉันไม่ได้พยายามดึงnot my jobบัตรออกจากการทำงาน แต่เพราะบางครั้งมันง่ายสำหรับผู้จัดการโครงการที่จะเข้าไปยุ่งเกี่ยวกับสิ่งที่ทีมพัฒนากำลังทำอยู่ ด้วยการมอบสิ่งนี้ให้กับการพัฒนาฉันให้การควบคุมและการปกครองแก่พวกเขา นอกจากนี้หากพวกเขารับผิดชอบในการตั้งค่านี้พวกเขาจะใช้มันมากกว่าในขณะที่ถ้าฉันตั้งค่าฉันจะได้รับประสบการณ์การเรียนรู้ที่ดีเกี่ยวกับวิธีตั้งค่าการรวมอย่างต่อเนื่อง แต่ไม่มี ROI และต้นทุนโอกาสในการให้ ขึ้นอยู่กับงานอื่น ๆ ของฉัน นอกจากนี้อีเมลตัวอย่างยังมีประโยชน์มาก :) +1
jmort253

@ jmort253 - ใช่ฉันรู้ว่าคุณไม่ได้ทำงาน ฉันจะอัปเดตเพื่อความชัดเจน
Tim Post

3
+1 สำหรับการเกี่ยวข้องกับทีมและให้พวกเขาตัดสินใจทางเทคนิค นั่นคือกุญแจสำคัญในการทำให้พวกเขายอมรับและใช้ระบบใหม่
PéterTörök

14

ฉันเห็นว่ามันเป็นไปได้สามวิธี:

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

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

  3. จ้าง dev เป็น build master และให้เขาติดตั้งเครื่องมือทั้งหมด จากนั้นใช้งานเขาต่อไปเพื่อปรับปรุงระบบเพิ่มตัวชี้วัดการสร้างเอกสารอัตโนมัติการทดสอบอัตโนมัติเป็นต้นซึ่งมีค่าใช้จ่ายสูงกว่า แต่ถ้าทำถูกต้องการลงทุนในบุคคลนี้จะจ่ายเร็วมากโดยเพิ่มประสิทธิภาพของทีมพัฒนาของคุณ บุคคลนี้ควรมีความเชี่ยวชาญในภาษาและกรอบงานที่ทีมของคุณใช้และมีความปรารถนาที่จะติดกาวพวกเขาในระบบ ในทางกลับกัน (จากความคิดเห็น) สิ่งนี้อาจไม่อยู่ในงบประมาณของคุณและการสร้างตำแหน่งพิเศษอาจนำไปสู่การแก้ไขเอกสารที่ทำให้ยากต่อการเปลี่ยนแปลง

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

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

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

หวังว่านี่จะช่วยได้


2
@Newtopian - สิ่งนี้ช่วยได้ โดยเฉพาะอย่างยิ่งส่วนที่เกี่ยวกับการวางแผนก่อนที่จะพยายามทำบางสิ่ง ขอขอบคุณ. +1
jmort253

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

1
+1 สำหรับ 3) ทีมซอฟต์แวร์ทุกคนควรมีผู้จัดการสร้างโดยเฉพาะในวันนี้
Sean Patrick Floyd

1
บริษัท ที่มีชื่อเสียงแห่งหนึ่งที่ฉันจำได้ว่าอ่าน (37signals? GitHub? Dunno) มอบหมายความรับผิดชอบในการเป็นปรมาจารย์สร้างให้กับบุคคลสุดท้ายที่ทำลายงานสร้าง สิ่งนี้ทำให้แน่ใจได้ว่า (1) ผู้ใช้จะต้องไม่ทำลายโครงสร้างและ (2) สมาชิกหลายคนในทีม (นึกคิด) ได้รับประสบการณ์การเรียนรู้เกี่ยวกับระบบสร้าง
มิเชล Tilley

1
@jmort ไม่ช้าก็เร็วก็มาถึงจุดที่ไม่มีใครสามารถทำได้โดยไม่ต้องมีตำแหน่งที่แน่นอน
Sean Patrick Floyd

3

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

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

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

อัปเดต:

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

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


สมมติว่าคุณเป็นผู้นำของผู้นำคนอื่น ๆ ? เป็นความรับผิดชอบของ CEO หรือไม่ที่จะระบุว่าผู้พัฒนา Java รุ่นเยาว์ในทีมโปรเจ็กต์ต้องการการฝึกอบรมเพิ่มเติมหรือไม่?
jmort253

@ jmort253 อาจมีคำตอบสั้น ๆ แต่ขึ้นอยู่กับโครงสร้างองค์กรของ บริษัท หากโครงสร้างของ บริษัท แบนและเล็กกว่านั้นอาจเป็นความรับผิดชอบของ CEO ที่จะทำให้แน่ใจว่าผู้พัฒนาได้รับการฝึกอบรม อันที่จริงฉันได้ทำงานใน บริษัท ที่เพิ่งเริ่มต้นจำนวนมากที่ VPs มีรายงานโดยตรงที่ไม่ใช่ผู้จัดการ
dietbuddha

1

ฉันเป็นนักพัฒนาส่วนใหญ่และฉันตั้งค่าเมื่อฉันสามารถ (คือเมื่อฉันไม่ได้ห้ามอย่างชัดเจนจากการทำเช่นนั้น) โดยทั่วไปเนื่องจากสถานที่ที่ฉันทำงานอยู่เป็นร้านค้า. NET ฉันเลือก CruiseControl.NET เพราะเป็นโอเพ่นซอร์สทำงานกับระบบควบคุมแหล่งข้อมูลที่สำคัญส่วนใหญ่และใช้งานง่าย ฉันต้องการตั้งค่าAmbient Orb เสมอเป็นหนึ่งในผลลัพธ์ แต่มักจะอยู่นอกเหนือการควบคุมของฉัน

นำมันมาประชุมก่อนเพื่อดูว่าใครมีความปรารถนาที่จะทำ - ตราบใดที่มันไม่ส่งผลกระทบต่อโครงการที่พวกเขากำลังทำงานอยู่

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

ที่สถานที่ก่อนหน้าของฉันความตั้งใจคือการสร้างมาตรฐานและสอดคล้องกันในทุกผลิตภัณฑ์ ผลิตภัณฑ์ที่มากเกินไปสามารถสร้างได้ในคอมพิวเตอร์พิเศษเพียงเครื่องเดียวเท่านั้น (ในกรณีของผลิตภัณฑ์หนึ่งซึ่งเกี่ยวข้องกับการควบคุมโดยบุคคลที่สามกับ DRM ที่ก้าวร้าวซึ่งเลิกกิจการไปนานแล้วเราต้องทำให้เครื่องจักรหนึ่งเครื่องมีชีวิตอยู่ประมาณ 5 ปีหลังจากนักพัฒนาเลิก เพราะเขาเป็นคนเดียวที่สามารถสร้างผลิตภัณฑ์การขนส่งทางเรือที่แทนที่ด้วยการค้าได้ในตอนนี้) นอกจากนี้การติดตั้งสามารถทำได้โดยคนคนหนึ่งซึ่งเป็นคนตอนเช้า - ดังนั้นหากคุณต้องการงานสร้างหลังจากเวลาประมาณบ่ายสามโมงคุณต้องรอจนถึงวันถัดไป

นักพัฒนาเป็นบุคคลที่เหมาะสมสำหรับงานนี้หรือไม่เนื่องจากต้องใช้ความรู้เกี่ยวกับ Java, Spring และ Google App Engine

มันขึ้นอยู่กับ. หากคุณมีคนงาน QA บางคนที่เหมาะสมในการเขียนสคริปต์ให้ถามก่อนที่จะมอบหมายให้พวกเขา

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


0

ลองตั้งค่าจากทิศทางที่แตกต่างกัน - เมื่อมีปัญหาในสภาพแวดล้อมการผลิตให้ใช้งาน onus ในทีม dev เพื่อแก้ไขและแก้ไขอย่างรวดเร็ว จากนั้นแนะนำแนวคิดของการสร้างยามค่ำคืนที่เรียบง่ายซึ่งรวบรวมจากรหัสล่าสุดการประทับตรารุ่น ฯลฯ หากไม่สามารถสร้างได้จะไม่ได้รับการส่งเสริม

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


0

คุณสามารถพูดได้ในการประชุมครั้งต่อไปของคุณว่า "โอเคฉันคิดว่าเราควรทำเช่นนี้เพราะใครสามารถใช้มันได้" ฉันให้คุณดีกว่าที่จะมีใครพูดว่า "ฉันจะทำเอง" จากนั้นคุณไม่จำเป็นต้องต่อสู้กับมัน

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