2013-11-30 5 views
2

Я играл с TeamCity, чтобы запустить CI-среду.Доступ к артефактам TeamCity в шаге построения

Я начал следующий Трой Хант 'You're deploying wrong', который был очень полезным, однако я хотел бы разделить упаковку и развертывание в 2 отдельных шагов, по следующим причинам:

  1. Я хотел передать дополнительные флаги msdeploy, который не является возможным (до знания m, y) с помощью пакета MSBuild и развертывания, описанного Трои.
  2. Я могу легко отключить второй этап сборки i.e, если мне когда-либо понадобится создать пакет, но не развернуть его.
  3. Я хотел использовать флаг -skip на msdeploy, чтобы он не удалял определенные папки, что снова не могло найти никакого способа сделать, не передавая в качестве аргумента командной строки.

Итак, в моем первом шаге MSBuild я просто параметры:

/P:Configuration=%env.Configuration%
/P:VisualStudioVersion=11.0
/P: IgnoreDeployManagedRuntimeVersion = Правда

А потом у меня есть вторая сборка Шаг, который использует командную строку сборку бегун, чтобы выполнить следующую команду MSDeploy:

"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync  -source:package="C:\ProgramData\JetBrains\TeamCity\system\artifacts\MyProject\%system.teamcity.buildConfName%\%teamcity.build.id%\MyProject.Web.csproj.zip" -dest:auto,ComputerName='https://devserver:8172/msdeploy.axd?site=MyWebsite',UserName='domain\username',Password='password',IncludeAcls='False',AuthType='Basic' -skip:objectName=dirPath,absolutePath=media$ -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -retryAttempts=2 -allowuntrusted 

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

Я кое-что прочитал о publishing artifacts whilst the Build is still in progress, но это похоже на взлома.

Любые советы были бы весьма полезными.

ответ

5

Вам будет лучше иметь две сборки против двух шагов сборки.

Первый (Build A) будет иметь 1 шаг сборки, который будет делать здание, а затем второй (Build B) просто выполнит развертывание на одном этапе сборки, используя артефакты из первого.

Итак, на первой вкладке конфигурации сборки A вы должны указать артефакты, которые должны быть доступны из первой сборки. Затем вы можете запустить сборку и подтвердить, что в разделе артефактов доступно все, что вам нужно. (Они покажут, когда сборка А завершилась).

Затем в разделе зависимостей (не помню точное имя, и я не в своем экземпляре TC) сборки B вы можете настроить его для использования артефактов сборки A, которые затем будут использоваться для развертывание.

Как только у вас будет все это, вы можете добавить триггер сборки, чтобы Build B запускался после успешного выполнения Build A, а затем, если вы в какой-то момент просто хотели запустить Build A, отключите триггер на сборке B или приостановите конфигурацию сборки B, которая остановит запуск триггера.

Смежные вопросы