TeamCity cho biết sử dụng “Tham số xây dựng” thay vì “/ thuộc tính:” trong bước MSBuild. Điều đó nghĩa là gì?


80

Tôi có thiết lập máy chủ TeamCity để thực hiện các bản dựng CI của mình. Tôi đang xây dựng và thử nghiệm giải pháp C # và chạy một số tác vụ MSBuild tùy chỉnh. Một trong những tác vụ này là in cảnh báo trong đầu ra bản dựng của tôi ...

Tham số dòng lệnh MSBuild chứa tham số "/ property:" hoặc "/ p:". Vui lòng sử dụng Tham số bản dựng thay thế.

Tôi không hiểu điều này có nghĩa là gì hoặc làm thế nào để loại bỏ nó. Google không tốt (có hoặc không có lỗi đánh máy). Tôi đã chạy tác vụ từ dòng lệnh (with /verbosity:diagnostic) và nó không xuất hiện, vì vậy tôi tin rằng đó là một thông báo TeamCity.

Nhiệm vụ MSBuild là

<Target Name="InstallDb">
  <MakeDir Directories="$(DbPath)" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseDrop.sql" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseCreate.sql -v DbPath=&quot;$(DbPath)&quot;" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseProgrammability.sql" />
</Target>

Và thông tin bước TeamCity có liên quan là

Phiên bản MSBuild: 4.0
MSBuild ToolsVersion: 4.0
Run platform: x64
Mục tiêu: InstallDb
Tham số dòng lệnh: /property:DbPath=%env.DB_PATH%


5
@AnneTheAgile bạn chỉ cần thêm Thông số xây dựng hệ thống TeamCity . Đó là một trong 3 loại thông số xây dựng mà bạn đã đề cập. Bạn đặt tên nó như 'system. <name-of-my-build-parameter>' và cung cấp giá trị bạn muốn. TeamCity sẽ tự động gửi nó đến MSBuild. Bạn có thể kiểm tra giá trị của tham số trong báo cáo xây dựng. Có một tab cho các thông số nơi tất cả chúng được liệt kê.
Anthony Mastrean

Câu trả lời:


58

Bạn phải thêm Build Parametersdưới Properties and environmentcác biến trong cấu hình

`nhập mô tả hình ảnh ở đây

Vì vậy, trong các tham số dòng lệnh trong Build Stepfor MSBUild, hãy xóa bất kỳ thuộc tính nào được chỉ định /p:và thêm từng thuộc tính đó vào Build Parameters(ảnh chụp màn hình ở trên) và cung cấp các giá trị


5
@Anthony Mastrean Yeah -Build parameters are passed to a build. Build parameters can be of two types: system properties and environment variables. Environment variables are supported by any build runner, however system properties are only available for build runners with property notion. For example, Command line runner does not support properties.
manojlds

8
Cảm ơn! Điều này đã hoạt động, nhưng tôi phải truy cập tài liệu này để thực sự hiểu việc triển khai / sử dụng.
Anthony Mastrean

2
từ tài liệu của thành phố nhóm: Tham số cấu hình cung cấp cách ghi đè một số cài đặt trong cấu hình bản dựng được kế thừa từ một mẫu. Chúng không bao giờ được chuyển đến một công trình.
topwik 13/12/11

8
Điều này có vẻ là một vấn đề nếu bạn có hai bước MSBuild trong cùng một cấu hình bản dựng sử dụng cùng một tham số, nhưng các giá trị khác nhau. Nếu chúng phải được xác định ở cấp "Cấu hình xây dựng", thì có vẻ như không thể chuyển các giá trị khác nhau của cùng một tham số cho một bước xây dựng.
TSmith

2
Điều này sẽ rất tuyệt vời. Ngoại trừ một lỗi của nó. Điều gì sẽ xảy ra nếu bạn muốn các tham số khác nhau được chuyển cho hai bước xây dựng khác nhau có cùng tên tham số?
Doug

39

Tất cả đều diễn ra ở hậu trường! Bạn chỉ cần tuân theo các quy ước đúng. Trong tập lệnh MSBuild của bạn, bạn sử dụng ký hiệu biến thông thường

$(DbPath)

Và trong TeamCity, bạn xác định hệ thống hoặc biến env

system.DbPath

TeamCity sẽ tự động gửi tất cả các biến hệ thống / env của nó đến tác vụ MSBuild của bạn, loại bỏ phần 'hệ thống' hoặc 'env'. Và bạn không cần phải viết /property:DbPath=system.DbPathtrong nhiệm vụ TeamCity của mình.


Theo tài liệu , chỉ các biến hệ thống mới được đưa vào các tập lệnh.
ladenedge

1
Theo tôi hiểu, các giao diện môi trường được đặt làm các giao diện môi trường thực tế trên tác nhân xây dựng. Mặc dù chúng có thể không được chuyển đến tập lệnh / bước xây dựng như các vars hệ thống, chúng vẫn có sẵn để sử dụng. MSBuild phải sử dụng môi trường vars để cung cấp giá trị $(MyVar)vì tôi có var môi trường TeamCity cung cấp giá trị cho công cụ dòng cmd ngốc nghếch mà tôi gọi bằng MSBuild.
Anthony Mastrean,
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.