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 ), MSBuild và cà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ì?