Nền tảng xây dựng tự động cho danh mục đầu tư .NET - sự lựa chọn tốt nhất? [đóng cửa]


10

Tôi có liên quan đến việc duy trì một danh mục ứng dụng .NET khá lớn. Ngoài ra trong danh mục đầu tư còn có các ứng dụng cũ được xây dựng trên các nền tảng khác - C ++, ECLIPS Forms, v.v.

Tôi có một khung xây dựng phức tạp trên NAnt ngay bây giờ để quản lý các bản dựng cho tất cả các ứng dụng này. Khung xây dựng sử dụng NAnt để thực hiện một số điều khác nhau:

  • Kéo mã ra khỏi Subversion, cũng như tạo các thẻ trong Subversion
  • Xây dựng mã, sử dụng MSBuild cho .NET hoặc các trình biên dịch khác cho các nền tảng khác
  • Xem các tập tin trong AssociationInfo để tăng số phiên bản
  • Xóa các tệp nhất định không được đưa vào bản dựng / bản phát hành
  • Phát hành mã cho các thư mục triển khai
  • Mã zips lên cho mục đích sao lưu
  • Triển khai các dịch vụ Windows; bắt đầu và ngăn chặn chúng
  • Vân vân.

Hầu hết những điều đó có thể được thực hiện chỉ với NAnt, nhưng chúng tôi đã xây dựng một vài nhiệm vụ mở rộng cho NAnt để thực hiện một số điều cụ thể cho môi trường của chúng tôi. Ngoài ra, hầu hết các quy trình trên được khái quát hóa và tái sử dụng trên nhiều tập lệnh xây dựng ứng dụng khác nhau của chúng tôi, do đó chúng tôi không lặp lại logic. Vì vậy, nó không phải là mã NAnt đơn giản, và các kịch bản xây dựng không đơn giản. Có hàng tá tệp NAnt kết hợp với nhau để thực hiện quá trình xây dựng.

Gần đây tôi đã không hài lòng với NAnt vì một số lý do: (1) cú pháp của nó thật tồi tệ - các ngôn ngữ lập trình trên XML thực sự khủng khiếp để duy trì, (2) dự án dường như đã chết trên cây nho; gần đây không có một tấn cập nhật nào và có vẻ như không ai thực sự nắm quyền. Cố gắng làm cho nó hoạt động với .NET 4 đã gây ra một số điểm đau do thiếu hoạt động này.

Vì vậy, với tất cả các nền tảng đó, đây là câu hỏi của tôi. Đưa ra một số điều mà tôi muốn thực hiện dựa trên danh sách đó ở trên và cho rằng tôi chủ yếu ở một cửa hàng .NET, nhưng tôi cũng cần xây dựng các dự án phi .NET, có cách nào khác để NAnt mà tôi nên xem xét chuyển sang?

Những thứ trên radar của tôi bao gồm Powershell (có hoặc không có psake ), MSBuildcào . Những điều này đều có ưu và nhược điểm. Ví dụ, MSBuild có đủ mạnh không? Tôi nhớ đã sử dụng nó nhiều năm trước và nó dường như không có nhiều sức mạnh như NAnt. Tôi có thực sự muốn nhóm của mình học Ruby chỉ để xây dựng bằng cách sử dụng cào không? Là psake thực sự đủ trưởng thành của một dự án để xác định danh mục đầu tư của tôi? Powershell có "quá gần với kim loại" không và cuối cùng tôi sẽ phải viết thư viện xây dựng của riêng mình giống như psake để tự mình sử dụng nó?

Có những công cụ khác mà tôi nên xem xét? Nếu bạn đã tham gia vào việc duy trì một danh mục đầu tư .NET có độ phức tạp đáng kể, bạn sẽ xem xét công cụ xây dựng nào? Nhóm của bạn hiện đang sử dụng cái gì?

Câu trả lời:


2

Nếu bạn đã sử dụng TeamCity, bạn sẽ có thể sử dụng các tính năng hiện có của nó cho hầu hết những gì bạn cần. Nó thực sự hỗ trợ xây dựng các tệp .sln của Visual Studio và nếu bạn cần thêm các thứ được thực hiện cho tất cả các dự án của mình, bạn có thể sửa đổi các tệp .target của .NET Framework trên các máy dựng của mình, vì vậy bạn không phải thay đổi các tệp csproj riêng lẻ.

Nó sẽ tự động kiểm tra từ Subversion, các tạo phẩm zip, cho phép bạn kiểm soát các tệp nào được coi là các tạo phẩm có thể triển khai. Phiên bản mới (6.0) cũng cho phép nhiều bước xây dựng, do đó, có cơ hội triển khai xcopy các tạo phẩm để chia sẻ.

Bạn cũng có thể viết các ứng dụng / tác vụ của riêng mình có thể chạy như một phần của bản dựng (thông qua trình chạy dòng lệnh) và làm bất cứ điều gì bạn muốn (chẳng hạn như bắt đầu / dừng các quy trình của Windows).


3

Chúng tôi tiếp cận mọi thứ như ba hoạt động khác nhau, Xây dựng, Triển khai và Cài đặt. Chúng tôi sử dụng TFS cho máy chủ xây dựng với một vài chú thích đến Powershell. Sau đó, chúng tôi sử dụng Powershell để thực hiện tất cả các phần Triển khai và Cài đặt khá phức tạp và trên nhiều máy chủ cả cục bộ và đám mây. Tôi đã rất hài lòng với việc học Powershell qua MSBuild hoặc một số công cụ khác. Tôi cũng đã có kinh nghiệm tốt với Visual Build trong quá khứ.


2

Hãy xem hudson và MSBuild như một cặp. Sức mạnh đi kèm với các khả năng mạnh mẽ của MSBuild và các plugin của hudson .

Chẳng hạn, bạn có thể sử dụng hudson và chạy các tập lệnh NAnt của mình cho đến khi bạn di chuyển sang MSBuild và sau đó nó cũng có thể chạy các tập lệnh MSBuild của bạn.

Cụ thể giải quyết điểm của bạn:

  • Lật đổgắn thẻ
  • MSBuild
  • Nhìn trộm vào hội nghịInfo đã được hỏi trên SO, nhưng giải pháp có thể không theo ý thích của bạn
  • MSBuild có thể xóa các tập tin dễ dàng
  • "Phát hành mã cho các thư mục triển khai" - bạn có thể yêu cầu hệ thống xây dựng bỏ qua bước đó và tự động triển khai nó bằng một số phương thức. Hoặc bạn có thể FTP nếu bạn thích.
  • MSBuild có thể nén
  • Các dịch vụ Windows, một lần nữa MSBuild là bạn của bạn ở đây.

Cảm ơn thông tin về MSBuild. Có vẻ như có nhiều sức mạnh hơn lần trước tôi đã cố gắng sử dụng nó. Về Hudson, điều này có mang lại lợi ích vượt xa những gì máy chủ CI khác cung cấp, chẳng hạn như TeamCity, mà chúng tôi hiện đang sử dụng không? Tôi đang cố gắng tránh làm đảo lộn quá nhiều hiện trạng ở đây và việc thay thế máy chủ CI của chúng tôi đồng thời chúng tôi thay thế các tập lệnh xây dựng của chúng tôi có vẻ đau đớn hơn.
RationalGeek

Theo ý kiến ​​khiêm tốn của tôi, tôi nghĩ rằng TeamCity thật tuyệt vời ... và hudson tốt hơn. Chúng có thể được nhìn thấy để thực hiện các chức năng tương tự, cho đến khi bạn muốn làm điều gì đó tuyệt vời - sau đó hudson thắng. Thành thật mà nói, hudson có thể phân tích (stylecop / fxcop) -> build-> test-> tag-> sao lưu cục bộ và ngoại vi-> triển khai trong khi giữ cho bạn cập nhật thông qua RSS, SMS, XFD.
Steven Evers

Hmm ... không có gì trong danh sách đó là không thể với TeamCity, nhưng có lẽ nó dễ dàng hơn với Hudson. Dù bằng cách nào, trừ khi chúng tôi gặp phải một số điểm đau với TC, tôi không nghĩ rằng chúng tôi sẽ sớm chuyển đổi bất cứ lúc nào.
RationalGeek

@jkohlhepp: Khó khăn là có nhiều giải pháp trong cùng một không gian. Vào cuối ngày, hudson rất dễ dàng và miễn phí 100% . IIRC, một điều mà TC có thể có trên hudson là tòa nhà đa tác nhân.
Steven Evers

2

Tôi sử dụng Studio tự động xây dựng . Tôi muốn thoát khỏi nó.

Lý do duy nhất khiến tôi không chuyển sang 100% MS Build hoặc Team Foundation Build là chi phí sẽ phải trả để xây dựng lại các tập lệnh hoạt động hoàn hảo hiện nay. Các kịch bản không thay đổi nhiều ...

Tuy nhiên, đối với sản phẩm tiếp theo, đây sẽ là Team Foundation Build mà không phải đắn đo vì những lý do chính sau (chúng còn nhiều nữa):

  • Thật dễ dàng để triển khai (phiên bản mới nhất: 2010)
  • Nó được tích hợp hoàn toàn với Visual StudioTeam Foundation Server
  • Nó đang trở thành một tiêu chuẩn như MS Build
  • Nó miễn phí với Bizspark (dành cho người khởi nghiệp)

Vì bạn cũng ở trong .NET, tôi nhiệt liệt khuyên bạn nên sử dụng TFB.

Nếu bạn không thể đăng ký Bizspark hoặc không đủ khả năng để mua giấy phép, bạn có thể truy cập CruiseControl.NET + MS Build và một vài tập lệnh hỗ trợ. Tại một công ty tiện ích lớn mà tôi làm việc, chúng tôi đã sử dụng CruiseControl.NET để xây dựng, thử nghiệm, triển khai và báo cáo tất cả các dự án của chúng tôi. Nó bao gồm triển khai dịch vụ web tự động.


Tôi đã không xem xét tùy chọn này, nhưng tôi không nghĩ rằng nó sẽ là một lựa chọn thực tế cho chúng tôi vì chúng tôi hoàn toàn không sử dụng TFS và đã từ chối các nỗ lực để chuyển sang nó trong quá khứ (vì ngân sách và các lý do khác). Nhưng cảm ơn vì lời đề nghị đó là một ý tưởng thú vị.
RationalGeek

Nó không phải là mở rộng. Nếu quản lý của bạn nhạy cảm về giá, MS Build sẽ là một kết hợp hoàn hảo. Tôi chỉ làm việc với MS Build + CruiseControl.NET và nó hoạt động rất tốt! Sẽ thêm vào đó trong câu trả lời của tôi.

@Pierre 303: Vì sự tò mò vì lợi ích, tại sao bạn muốn thoát khỏi Automated Build Studio?
RationalGeek

@Pierre 303: Chi phí của TFS không phải là mối quan tâm duy nhất. Cửa hàng của tôi là một phần của một doanh nghiệp lớn hơn và họ đã tiêu chuẩn hóa Subversion và các công cụ khác và "không chuẩn" và đi với TFS gây ra các vấn đề chính trị.
RationalGeek

@jkohlhepp: nó không dễ sử dụng, nó không được tích hợp tốt với Visual Studio (ít nhất là phiên bản tôi có) và nó không phải là một tiêu chuẩn.

2

FinalBuilder có thể thực hiện tất cả các mục được yêu cầu của bạn, với GUI đẹp và ứng dụng máy chủ xây dựng được gửi miễn phí.


2

Tôi hiện đang làm những gì bạn đang làm (nghĩa là từ xây dựng đến đóng gói đến triển khai) bằng MSBuild (> 3000 dòng tập lệnh). CI đang sử dụng CruiseControl.Net và hy vọng tôi có thể chuyển sang TeamBuild trong tương lai. MSBuild là cồng kềnh (lập trình bằng XML) nhưng nó khá mạnh mẽ đặc biệt là xử lý hàng loạt và theo dõi phụ thuộc. Nó được tích cực duy trì và cải tiến trong các phiên bản .Net mới và là nền tảng của hệ thống xây dựng trong Visual Studio và TFS. Ngoài ra các tệp dự án phòng thu trực quan thực sự là các dự án MSBuild và tôi có thể nối vào các điểm mở rộng khác nhau. Các gói mở rộng MSBuildcó nhiều nhiệm vụ bổ sung và thật dễ dàng để tạo các nhiệm vụ của riêng bạn theo chương trình. Tôi đề nghị cung cấp cho MSBuild một suy nghĩ nghiêm túc. Gần đây tôi cũng đang học powershell và thấy dễ dàng cho một số tác vụ nhất định trong giai đoạn triển khai, như cài đặt và định cấu hình chứng chỉ, IIS, v.v.

Chỉnh sửa dự án MSBuild trong VisualStudio vì nó hiểu cú pháp và cung cấp cho bạn intellisense. Đây là một số tiện ích tốt khác sẽ giúp với MSBuild.
MSBuild Launch Pad - Đối với các phần mở rộng shell
MSBuild SideKicks - Chỉnh sửa, thực thi và gỡ lỗi các tập lệnh.


1

Có lẽ bạn đang yêu cầu quá nhiều tập lệnh xây dựng và không đủ máy chủ xây dựng của mình - với thành phố nhóm, bạn có thể dễ dàng có các tập lệnh đơn giản thực hiện từng viên đạn của mình, bằng bất kỳ ngôn ngữ hoặc ngăn xếp nào có ý nghĩa và sử dụng các nhiệm vụ xây dựng TeamCity để chuỗi những thứ với nhau khi thích hợp.


Có vẻ như hầu hết các câu trả lời này đều đánh đồng CI với các tập lệnh xây dựng. Tôi đã luôn coi các tập lệnh xây dựng là thông minh và máy chủ CI là thứ khởi động các bản dựng dựa trên các trình kích hoạt. Nhưng có lẽ bạn đúng và tôi cần phải suy nghĩ lại về điều này.
RationalGeek

1

Tôi thực sự khuyên bạn nên TeamCity, thật dễ dàng để cấu hình và thiết lập. MSBuild thích hợp hơn NAnt vì lý do đơn giản là tất cả các tệp dự án / giải pháp trong vs2008 / 2010 là các tệp MSBuild về mặt kỹ thuật, nhưng bạn có thể định cấu hình TeamCity với MSBuild hoặc NAnt.

OfCference, TeamCity sẽ chi phí bạn. Cá nhân tôi đã đưa ra một lựa chọn sẽ thích cào, đơn giản vì ma sát với các công cụ Ruby so với các công cụ khác mặc dù psake cũng là một ứng cử viên tốt.


1
FYI TeamCity miễn phí nếu bạn có ít hơn 20 cấu hình bản dựng và dưới 20 người dùng. Ngoài ra, nếu bạn là một dự án nguồn mở, bạn có thể đăng ký cho họ để được cấp phép miễn phí không giới hạn.
RationalGeek

0

Bạn đã xem xét Hudson ? Nó có thể là một rắc rối, vì nó yêu cầu máy chủ ứng dụng Java chạy, nhưng tôi nghĩ nó có thể cho phép bạn sử dụng tập lệnh NAnt hiện tại của bạn và xây dựng trên đó bằng các công cụ khác.


Hudson không chỉ là một nền tảng tích hợp liên tục và không thực sự là một nền tảng xây dựng. Chúng tôi có một máy chủ CI tại chỗ - TeamCity, hoạt động tốt với NAnt. Tuy nhiên, lý do tôi muốn thay thế NAnt là vì việc duy trì các tập lệnh NAnt là đau đớn. Sử dụng các tập lệnh hiện tại thông qua Hudson không giải quyết được vấn đề này. Nhờ đề nghị mặc dù.
RationalGeek

IMHO Hudson rất hạn chế trong những gì nó làm chính xác với các dự án VS. Việc kiểm tra không bị ràng buộc với các thay đổi theo cách bạn mong đợi và đằng sau hậu trường, nó không làm gì khác ngoài việc chạy một tệp bó bạn tạo thông qua giao diện web và rất nhiều plugin. Các báo cáo là tốt đẹp nếu bạn có thể làm cho nó hoạt động tốt mặc dù.
Hóa đơn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.