TeamCity каже використовувати “Параметри побудови” замість “/ property:” на кроці MSBuild. Що це означає?


80

У мене є налаштування сервера TeamCity, щоб робити мої збірки CI. Я будую та тестую рішення C # та запускаю деякі власні завдання MSBuild. Одним із цих завдань є друк попередження в моїй версії збірки ...

Параметри командного рядка MSBuild містять параметри "/ property:" або "/ p:". Будь ласка, використовуйте Build Parameteres замість цього.

Я не розумію, що це означає або як це видалити. Це погано Google (з друкарською помилкою або без). Я запустив завдання з командного рядка (з /verbosity:diagnostic), і воно не відображається, тому я вважаю, що це повідомлення TeamCity.

Завданням MSBuild є

<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>

І відповідна інформація про крок TeamCity

Версія MSBuild: 4.0
MSBuild Tools Версія: 4.0
Запустити платформу: x64
Цілі:
Параметри командного рядка InstallDb : /property:DbPath=%env.DB_PATH%


5
@AnneTheAgile ви просто додаєте параметр побудови системи TeamCity . Це один із 3 типів параметрів збірки, про які ви згадали. Ви називаєте це як "system. <name-of-my-build-parameter>" і вказуєте потрібне значення. TeamCity автоматично надішле його в MSBuild. Ви можете перевірити значення параметра у звіті про збірку. Існує вкладка для параметрів, де вони всі перераховані.
Ентоні Мастреан,

Відповіді:


58

Вам потрібно додати Build Parametersпід Properties and environmentзмінні в конфігурації

`введіть тут опис зображення

Отже, у параметрах командного рядка у Build Stepфайлі for MSBUild видаліть будь-яке властивість, яке вказано як, /p:і додайте кожне з них до Build Parameters(знімка екрана вище) та вкажіть значення


5
@Anthony Mastrean Так -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
Дякую! Це спрацювало, але мені довелося відвідати цей документ, щоб по-справжньому зрозуміти реалізацію / використання.
Ентоні Мастреан

2
з команд city docs: Параметри конфігурації надають спосіб замінити деякі параметри у конфігурації збірки, успадкованої від шаблону. Вони ніколи не передаються до збірки.
topwik

8
Це здається проблемою, якщо у вас є два кроки MSBuild в одній конфігурації збірки, які використовують той самий параметр, але різні значення. Якщо їх потрібно визначити на рівні "Конфігурація збірки", то, схоже, неможливо передати різні значення одного і того ж параметра на крок збірки.
TSmith

2
Це було б чудово. Крім помилки. Що робити, якщо ви хочете, щоб різні параметри передавалися двом різним крокам побудови, що мають одне й те саме ім’я параметра?
Даг,

39

Все це відбувається за лаштунками! Вам просто потрібно дотримуватися правильних умов. У вашому скрипті MSBuild ви використовуєте звичайну нотацію змінних

$(DbPath)

А в TeamCity ви визначаєте системну або змінну env

system.DbPath

TeamCity автоматично надсилатиме всі свої змінні системи / env до вашого завдання MSBuild, видаляючи частину "system" або "env". І вам не потрібно писати /property:DbPath=system.DbPathу своєму завданні TeamCity.


Згідно з документами , у скрипти вводяться лише системні змінні.
ladenedge

1
Як я розумію, значення середовища vars встановлюються як фактичні значення середовища змінної агента збірки. Незважаючи на те, що вони можуть не передаватися в сценарій / крок збірки, як системні вари, вони доступні для використання. MSBuild повинен використовувати vars середовища для надання значень, $(MyVar)оскільки я маю змінну середовища TeamCity, яка надає значення для інструменту рядкових cmd рядків, який я викликаю за допомогою MSBuild.
Ентоні Мастреан,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.