Сборка и развертывание TeamCity: как передать зависимые пути артефактов в сценарий?

Как вы передаете пути артефактов скрипту в TeamCity. Сценарий такой

  1. Построить проект
  2. Развертывание проекта (с зависимостью артефакта от #1)

Шаг 2 состоит из сценария, который

  1. Останавливает службу (для разблокировки файлов)
  2. Копирует артефакты сборки на сервер
  3. Перезапускает службу

Я борюсь с шагом 2, я полагаю, что мне нужно передать путь к артефактам сборки в сценарий, но я не вижу, как вы это делаете?


person David Hayes    schedule 27.04.2012    source источник
comment
Какую версию TeamCity вы используете?   -  person Bronumski    schedule 27.04.2012
comment
TeamCity 7.0.2 - это версия, которую я установил   -  person David Hayes    schedule 27.04.2012


Ответы (1)


Мы делаем что-то вроде этого. Это не на 100% ясно, но похоже, что вы хотите выполнить сборку и развертывание как две отдельные сборки в TeamCity с зависимостью артефакта от сборки развертывания в основной сборке, что мы и делаем. Вот как мы это делаем.

  • Настройте свои артефакты из основной сборки, что, похоже, вы уже сделали.

    Example: **\bin\release\*.* => bin
  • Настройте зависимость от артефакта (мы также делаем зависимость от моментального снимка, но вам это не обязательно), чтобы извлекать артефакты из основной сборки и помещать их в локальную папку в сборке развертывания.

    Example: Artifacts paths: bin\**\*.* Destination path: bin\
  • Мы используем смесь MSBuild и PowerShell для фактической работы по развертыванию. В каждом случае вы можете ссылаться на артефакты, используя относительный путь.

    ЕСЛИ рабочая папка сборки выглядит так:

    root
     |- bin (Artifacts pulled in from main build)
     |- src
     |- build (Where your build and deployment scripts live)
    

    Вы получите доступ к файлам bin из своего сценария развертывания, расположенного в папке сборки, например:

    ..\bin\[your files]

Затем вы можете передать путь к своим артефактам сборки, как это

%teamcity.build.checkoutDir%\bin\
person Bronumski    schedule 27.04.2012
comment
Спасибо, я думаю, что я немного не понял, как зависимость артефакта вытащила артефакты сборки в свой рабочий каталог %teamcity.build.checkoutDir%\bin\ был путь, который мне нужен. TeamCity великолепен, но часть документации немного непонятна. - person David Hayes; 27.04.2012
comment
Вам не нужна переменная %teamcity.build.checkoutDir% bin\, было бы хорошо, но если она делает ее более понятной для обслуживания, тем лучше. - person Bronumski; 27.04.2012
comment
Если вы используете powershell, добавьте обход -ExecutionPolicy в командную строку, установка политики на машине не работает (как ни странно) - person David Hayes; 27.04.2012
comment
Я попробую без него, но моему сценарию Powershell нужен полный путь, или TeamCity расширит его для меня? - person David Hayes; 28.04.2012
comment
TeamCity сможет использовать относительные пути, но вам нужно сообщить powershell, чтобы он установил для своей среды конкретный путь для выполнения относительных путей, он не рассматривает пути как относительные к работающему файлу сценария powershell. - person Bronumski; 28.04.2012