2015-03-04 21 views
9

Trong TeamCity, tôi đã tạo một Cấu hình Xây dựng với hai bước Xây dựng các bước nên xây dựng một tệp .sln Giải pháp.Cách thích hợp để sử dụng/p cho mỗi bước xây dựng trong cấu hình xây dựng TeamCity là gì?

Tôi đã xác định mục tiêu là "Xây dựng", khi tôi chạy bản dựng, cả hai bước rõ ràng là thực thi cấu hình chuẩn và cả hai đều xây dựng cấu hình Gỡ lỗi hoặc Phát hành hai lần.

Bây giờ tôi đi đến các thiết lập xây dựng các bước và tìm thấy CommandLine lập luận, cho Debug tôi thêm /p:Configuration=Debug, cho Release tôi thêm /p:Configuration=Release.

Xây dựng kết quả này trong một cảnh báo của TeamCity:

MSBuild command line parameters contain "/property:" or "/p:". It is recommended to define System Property on Build Parameters instead. 

Mặc dù một debug và một phiên bản đã được xây dựng.

Tôi googled thông báo này và tạo hai System Parameters: /p:Configuration=Debug/p:Configuration=Release. Nếu bây giờ tôi sẽ thay đổi dòng lệnh của mình để gỡ lỗi thành %system.DebugConfig% và để giải phóng thành %system.ReleaseConfig% Tôi gặp lỗi tương tự. Chỉ sau đó tôi thực sự hiểu rằng các thông số hệ thống đó sẽ được chuyển đến từng bước xây dựng không bao giờ tự động, luôn luôn. Ok, nhưng làm thế nào để tôi xác định đúng hai bước xây dựng khác nhau xây dựng gỡ lỗi và phát hành bằng cách sử dụng tham số hệ thống hoặc không có thành viên nhóm phàn nàn về /p được tìm thấy trong dòng lệnh?

Trả lời

4

Không có cách nào để làm điều này (mà tôi biết, gấu với tôi) nhưng có đủ lựa chọn:

Nếu bạn sẵn sàng thả bước xây dựng riêng biệt và thay vào đó sử dụng riêng biệt được xây dựng thay vì - mà thông thường không phải là bất kỳ vấn đề gì, sử dụng mẫu: tạo một build template trong đó bạn thêm tất cả các thông số phải được cấu hình, chẳng hạn như Configuration trong trường hợp của bạn và cung cấp cho chúng các giá trị mặc định phù hợp. Sau đó, tạo cấu hình xây dựng cho từng kết hợp thuộc tính bạn muốn và trong cấu hình đó ghi đè các tham số.

Tùy chọn khác: tự làm. Tôi đã chuyển đổi giữa một vài CIs trong quá khứ và rõ ràng là bạn càng dựa vào các tính năng của hệ thống CI, nó càng trở nên khó khăn để kiểm tra các bản xây dựng theo cách thủ công, nó càng rườm rà hơn thông qua giao diện web của hệ thống CI hoặc cơ sở dữ liệu hoặc tập tin cấu hình để tìm các thông số cấu hình đúng, và càng làm tê liệt quá trình chuyển đổi sang một CI khác trở thành. Vì vậy, tại một thời điểm, tôi đã từ bỏ nó và viết một vài tập lệnh msbuild 'master' để xây dựng mọi thứ chỉ với một cú nhấn nút để nói, hãy nhớ Joel Test, nhưng trên bất kỳ máy nào tôi muốn, bao gồm cả của riêng tôi, sự cần thiết cho bất kỳ CI nào cả. Đó là một sự cứu trợ mà tôi đã không nhìn lại từ đó, và cấu hình CI giờ đây được giữ ở mức tối thiểu. Áp dụng cho trường hợp của bạn: tạo một tập tin msbuild như dưới đây và một bước xây dựng ở TC mà gọi đó là xây dựng mục tiêu và có một poiting tham số hệ thống MyTargetProjectFile đến tập tin thực tế dự án:

<ItemGroup> 
    <Configurations Include="Debug;Release"/> 
</ItemGroup> 

<Target Name="Build"> 
    <MsBuild Projects="$(MyTargetProjectFile)" Targets="Build" 
      Properties="Configuration=%(Configurations.Identity)"/> 
</Target> 

Tuy nhiên, một lựa chọn: chỉ cần bỏ qua cảnh báo TeamCity của . Nó không bao giờ rõ ràng với tôi tại sao họ khăng khăng làm theo cách này, có vẻ phản trực giác và dẫn đến những câu hỏi như thế này:] Có các bước xây dựng khác nhau với những đặc tính khác nhau dường như là một yêu cầu khá cơ bản, phải không? Tôi không nghĩ rằng chúng tôi có bất kỳ bước msbuild không sử dụng/p và tất cả hoạt động tốt.

+0

Cảm ơn thông tin chi tiết.Tại nơi làm việc tôi thực sự viết các tập tin msbuild chính để ngăn chặn chi phí thiết lập nếu một tác nhân xây dựng chết (vì chúng không được sao lưu). Cấu hình chúng trở lại trạng thái hợp lệ luôn luôn là đau trong **, vì vậy tôi thực sự tạo ra các mục tiêu riêng. Tôi nghĩ rằng tôi sẽ dính vào để bỏ qua cảnh báo TeamCity đầu tiên và làm cho các bậc thầy khi tôi thấy tôi cần nhiều hơn '/ p' đối số. – Samuel

Các vấn đề liên quan