Как использовать параметры в метараннере TeamCity, сгенерированном из подпроекта?

Я настроил проект верхнего уровня A в TeamCity.

Проект A имеет одну конфигурацию сборки под названием A1.

Проект B является подпроектом A.

Проект B имеет одну конфигурацию сборки под названием B1.

В этой конфигурации сборки я определил два параметра:

  • env.param1 = "ABCDE"
  • env.param2 = %param1%

Затем из конфигурации сборки проекта B (B1) я извлекаю мета-бегун и присоединяю его к родительскому проекту B B. сильный>А.

Но когда я затем пытаюсь использовать мета-бегун в конфигурации сборки проекта A (A1), эта сборка не запускается; он жалуется, что env.param1 не определен.

Когда я смотрю на определение шага сборки (A1) или мета-бегуна, я ясно вижу, что внутри него определен env.param1. Но на странице параметров конфигурации сборки проекта A (A1) он указывает env.param1 как "".

Я думал, что мета-раннер более или менее инкапсулирует все, что в нем определено, поэтому его можно использовать везде, где вы его прикрепите. Из документов:

По сути, мета-бегун — это набор шагов сборки из одной конфигурации сборки, которые вы можете повторно использовать в другой; это определение xml, содержащее этапы сборки, требования и параметры, которые можно использовать в определениях xml других конфигураций сборки. TeamCity позволяет извлекать мета-бегунов с помощью веб-интерфейса.

[Отрывок]

После нажатия кнопки «Извлечь» TeamCity возьмет определения всех шагов и параметров сборки в этой конфигурации сборки и создаст из них средство запуска сборки.

Что я делаю неправильно?


person boots    schedule 22.03.2014    source источник
comment
Проблема на самом деле более общая, чем эта. Получается, что любой метараннер не имеет доступа к параметрам сборки вне себя. Чтобы обойти это, вы можете добавить параметры в метараннер, которые затем устанавливаются каждый раз, когда он используется, из параметров сборок, которые его используют.   -  person Dan Fitch    schedule 26.06.2014


Ответы (1)


Метараннер просматривает ваш env.param1 в проекте A, то есть "". Чтобы избежать этого, используйте переменную, относящуюся к метараннеру, в метараннере и определите ее на этапе сборки метараннера. В этом случае путаницы не будет.

Если вы хотите автоматически параметризовать вещи, вы можете установить переменную, специфичную для метараннера, на этапе сборки, чтобы ссылаться на %env.param1% проекта A.

person CacheYouOnTheFlipSide    schedule 22.08.2018