แพลตฟอร์มสร้างอัตโนมัติสำหรับ. NET - ตัวเลือกที่ดีที่สุด? [ปิด]


10

ฉันเกี่ยวข้องกับการดูแลรักษาผลงานแอปพลิเคชั่น. NET ค่อนข้างมาก นอกจากนี้ในพอร์ตโฟลิโอยังมีแอพพลิเคชั่นรุ่นเก่าที่สร้างขึ้นบนแพลตฟอร์มอื่น ๆ เช่น C ++, ECLIPS Forms

ฉันมีกรอบการสร้างที่ซับซ้อนด้านบนของ NAnt ในขณะนี้ที่จัดการการสร้างสำหรับแอปพลิเคชันเหล่านี้ทั้งหมด กรอบการสร้างใช้ NAnt ในการทำสิ่งต่าง ๆ มากมาย:

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

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

เมื่อเร็ว ๆ นี้ฉันไม่พอใจกับ NAnt ด้วยเหตุผลสองสามประการ: (1) มันเป็นไวยากรณ์ที่แย่มาก - ภาษาการเขียนโปรแกรมบน XML นั้นยอดเยี่ยมมากในการรักษา (2) โครงการดูเหมือนจะตายบนเถาวัลย์ เมื่อไม่นานมานี้มีการอัปเดตมากมายและดูเหมือนว่าไม่มีใครสามารถควบคุมได้ การพยายามทำให้มันทำงานกับ. NET 4 ได้ก่อให้เกิดอาการปวดจุดเนื่องจากการขาดกิจกรรมนี้

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

สิ่งที่อยู่ในเรดาร์ของฉันรวมถึงPowershell (มีหรือไม่มีpsake ) MSBuildด้วยตัวเองและคราด สิ่งเหล่านี้ล้วนมีข้อดีและข้อเสีย ตัวอย่างเช่น MSBuild มีประสิทธิภาพเพียงพอหรือไม่ ฉันจำได้ว่าใช้มันเมื่อหลายปีก่อนและมันก็ไม่ได้มีพลังมากเท่า NAnt ฉันต้องการให้ทีมของฉันเรียนรู้ทับทิมเพื่อสร้างงานโดยใช้เรคหรือไม่? psake เป็นผู้ใหญ่มากพอที่โครงการจะยึดพอร์ตโฟลิโอของฉัน? Powershell "ใกล้กับโลหะมากเกินไป" หรือไม่และฉันจะต้องเขียนห้องสมุดสร้างของฉันเองเพื่อคล้ายกับ psake เพื่อใช้มันด้วยตัวเองหรือไม่?

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

คำตอบ:


2

หากคุณใช้ TeamCity อยู่แล้วคุณควรจะสามารถใช้คุณสมบัติที่มีอยู่ของมันได้ในสิ่งที่คุณต้องการ มันสนับสนุนการสร้างไฟล์. sln ของ Visual Studio และหากคุณต้องการสิ่งพิเศษสำหรับโครงการทั้งหมดของคุณคุณสามารถแก้ไขไฟล์. เป้าหมายของ. NET Framework บนเครื่องสร้างของคุณได้ดังนั้นคุณไม่จำเป็นต้องแก้ไขไฟล์ csproj แต่ละไฟล์

มันจะตรวจสอบโดยอัตโนมัติจากการโค่นล้มสิ่งประดิษฐ์ซิปช่วยให้คุณสามารถควบคุมไฟล์ที่จะถือว่าเป็นสิ่งที่ปรับใช้ได้ เวอร์ชันใหม่ (6.0) ยังอนุญาตให้สร้างหลายขั้นตอนดังนั้นจึงมีโอกาสสำหรับการปรับใช้ xcopy ของส่วนเพื่อแบ่งปัน

คุณยังสามารถเขียนแอพ / งานของคุณเองที่สามารถทำงานเป็นส่วนหนึ่งของบิลด์ (ผ่านทาง command-line runner) และทำทุกอย่างที่คุณต้องการ (เช่นเริ่ม / หยุดกระบวนการ Windows)


3

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


2

ดูฮัดสันและ MSBuild เป็นคู่ พลังมาพร้อมกับความสามารถที่แข็งแกร่งของ MSBuild และปลั๊กอินของฮัดสัน

ตัวอย่างเช่นคุณสามารถใช้ฮัดสันและเรียกใช้สคริปต์ NAnt ของคุณจนกว่าคุณจะย้ายไปยัง MSBuild จากนั้นจะสามารถเรียกใช้สคริปต์ MSBuild ของคุณได้เช่นกัน

พูดถึงประเด็นของคุณโดยเฉพาะ:

  • การโค่นล้มและการติดแท็ก
  • MSBuild
  • การแอบดูเข้าไปใน AssemblyInfo ถูกถามใน SO แต่โซลูชันอาจไม่ถูกใจคุณ
  • MSBuild สามารถลบไฟล์ได้อย่างง่ายดาย
  • "ปล่อยรหัสไปยังโฟลเดอร์การปรับใช้" - คุณสามารถให้ระบบบิลด์ข้ามขั้นตอนนั้นและปรับใช้โดยอัตโนมัติโดยใช้วิธีการหลายวิธี หรือคุณสามารถFTPหากคุณต้องการ
  • MSBuild สามารถซิป
  • บริการ Windows อีกครั้ง MSBuild คือเพื่อนของคุณที่นี่

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

จากความเห็นที่ต่ำต้อยของฉันฉันคิดว่า TeamCity นั้นยอดเยี่ยม ... และฮัดสันนั้นดีกว่า พวกเขาสามารถเห็นได้ว่าทำหน้าที่เดียวกันจนกว่าคุณจะต้องการทำสิ่งที่ยอดเยี่ยม - จากนั้นฮัดสันก็ชนะ สุจริตฮัดสันสามารถวิเคราะห์ (stylecop / fxcop) -> สร้าง -> ทดสอบ -> แท็ก -> สำรองข้อมูลในและนอกสถานที่ - ปรับใช้ในขณะที่ทำให้คุณถึงวันที่ผ่านทาง RSS, SMS, XFD ของ
Steven Evers

อืม ... ไม่มีอะไรในรายการที่เป็นไปไม่ได้กับ TeamCity แต่บางทีมันอาจจะง่ายกว่าสำหรับ Hudson ไม่ว่าจะด้วยวิธีใดเว้นแต่ว่าเราจะได้รับคะแนนความเจ็บปวดด้วย TC ฉันไม่คิดว่าเราจะเปลี่ยนได้ตลอดเวลาในไม่ช้า
RationalGeek

@ jkohlhepp: ปัญหาคือมีหลายวิธีในพื้นที่เดียวกัน ในตอนท้ายของวันฮัดสันนั้นง่ายและฟรี100% IIRC สิ่งหนึ่งที่ TC อาจมีบนฮัดสันคือการสร้างตัวแทนหลายตัว
Steven Evers

2

ผมใช้อัตโนมัติสร้างสตูดิโอ ฉันต้องการกำจัดมัน

เหตุผลเดียวที่ฉันไม่เปลี่ยนมาเป็น 100% MS BuildหรือTeam Foundation Buildเป็นค่าใช้จ่ายที่เกี่ยวข้องกับการสร้างสคริปต์ที่ทำงานได้อย่างสมบูรณ์แบบในปัจจุบัน สคริปต์ไม่เปลี่ยนแปลงมากนัก ...

อย่างไรก็ตามสำหรับผลิตภัณฑ์ถัดไปนี่จะเป็นTeam Foundation Buildโดยไม่ลังเลด้วยเหตุผลหลักดังต่อไปนี้ (มีมากมาย)

  • ติดตั้งง่าย (รุ่นล่าสุด: 2010)
  • มันรวมเข้ากับVisual StudioและTeam Foundation Server อย่างสมบูรณ์
  • มันกลายเป็นมาตรฐานเช่น MS Build
  • ได้ฟรีกับ Bizspark (สำหรับผู้เริ่มต้น)

เนื่องจากคุณอยู่ใน. NET ด้วยฉันขอแนะนำให้คุณใช้ TFB

หากคุณไม่สามารถสมัคร Bizspark หรือไม่สามารถซื้อใบอนุญาตได้คุณสามารถไปที่CruiseControl.NET + MS Buildและสคริปต์สนับสนุนบางส่วน ที่ บริษัท ยูทิลิตี้ขนาดใหญ่ที่ฉันทำงานให้เราใช้CruiseControl.NETเพื่อสร้างทดสอบปรับใช้และรายงานโครงการทั้งหมดของเรา มันรวมการปรับใช้บริการเว็บอัตโนมัติ


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

มันไม่กว้างขวาง หากการจัดการของคุณอ่อนไหวต่อราคา MS Build จะเป็นคู่ที่สมบูรณ์แบบ ฉันเคยทำงานกับ MS Build + CruiseControl.NET เท่านั้นและมันใช้งานได้ดีมาก! จะเพิ่มเข้าไปในคำตอบของฉัน

@Pierre 303: เพราะความอยากรู้อยากเห็นทำไมคุณต้องการกำจัด Automated Build Studio?
RationalGeek

@Pierre 303: ค่าใช้จ่ายของ TFS ไม่ได้เป็นเพียงความกังวลเท่านั้น ร้านค้าของฉันเป็นส่วนหนึ่งขององค์กรขนาดใหญ่และพวกเขามีมาตรฐานในการโค่นล้มและเครื่องมืออื่น ๆ และเป็น "มาตรฐาน" และไปกับ TFS ทำให้เกิดปัญหาทางการเมือง
RationalGeek

@jkohlhepp: มันใช้งานง่ายไม่รวมกับ Visual Studio (อย่างน้อยรุ่นที่ฉันมี) และยังห่างไกลจากการเป็นมาตรฐาน

2

FinalBuilderสามารถทำทุกสิ่งที่คุณร้องขอได้ด้วย GUI ที่ดีและแอพพลิเคชั่นเซิร์ฟเวอร์ของผู้สร้างโยนเข้ามาฟรี


2

ขณะนี้ฉันกำลังทำสิ่งที่คุณกำลังทำ (เช่นจากการสร้างไปจนถึงการบรรจุภัณฑ์จนถึงการปรับใช้) โดยใช้ MSBuild (> 3000 บรรทัดสคริปต์) CI กำลังใช้งาน CruiseControl.Net และหวังว่าฉันจะสามารถย้ายไปยัง TeamBuild ในอนาคต MSBuild นั้นยุ่งยาก (การเขียนโปรแกรมใน XML) แต่มันค่อนข้างทรงพลังเป็นพิเศษโดยเฉพาะการประมวลผลแบทช์และการติดตามการพึ่งพา มีการบำรุงรักษาและปรับปรุงอย่างต่อเนื่องในรุ่น. Net ใหม่และเป็นพื้นฐานของการสร้างระบบใน Visual Studio และ TFS นอกจากนี้ไฟล์โครงการ visual studio เป็นโครงการ MSBuild จริง ๆ และฉันสามารถเชื่อมต่อเข้ากับส่วนขยายต่างๆได้ แพ็คขยาย MSBuildมีงานเพิ่มเติมมากมายและเป็นเรื่องง่ายที่จะสร้างงานของคุณเองอย่างเป็นระบบ ฉันขอแนะนำให้ MSBuild คิดอย่างจริงจัง เมื่อเร็ว ๆ นี้ฉันยังได้เรียนรู้ powerhell และพบว่าง่ายสำหรับงานบางอย่างเป็นพิเศษในช่วงการปรับใช้เช่นการติดตั้งและกำหนดค่าใบรับรอง IIS ฯลฯ

แก้ไขโครงการ MSBuild ใน VisualStudio เพราะเข้าใจไวยากรณ์และช่วยให้คุณ intellisense นี่คือสาธารณูปโภคที่ดีอื่น ๆ ที่จะช่วย MSBuild
MSBuild Launch Pad - สำหรับส่วนขยายของเชลล์
MSBuild SideKicks - แก้ไข, เรียกใช้และดีบักสคริปต์แบบกราฟิก


1

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


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

1

ฉันขอแนะนำ TeamCity มันเป็นเรื่องง่ายที่จะกำหนดค่าและตั้งค่า MSBuild เป็นที่นิยมมากกว่า NAnt ด้วยเหตุผลง่ายๆว่าไฟล์โครงการ / โซลูชันทั้งหมดใน vs2008 / 2010 เป็นไฟล์ MSBuild ทางเทคนิค แต่คุณสามารถกำหนดค่า TeamCity ด้วย MSBuild หรือ NAnt

แน่นอนว่า TeamCity ต้องเสียค่าใช้จ่าย โดยส่วนตัวแล้วฉันเลือกตัวเลือกที่จะชอบเรคเพียงเพราะความเสียดทานกับเครื่องมือ Ruby เมื่อเทียบกับส่วนอื่น ๆ แม้ว่า psake ก็เป็นตัวเลือกที่ดีเช่นกัน


1
FYI TeamCity ฟรีหากคุณมีการกำหนดค่าการสร้างน้อยกว่า 20 คนและผู้ใช้น้อยกว่า 20 คน นอกจากนี้หากคุณเป็นโครงการโอเพ่นซอร์สคุณสามารถสมัครได้โดยไม่ต้องมีใบอนุญาตฟรี
RationalGeek

0

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


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

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