Определение сборки TFS2010 для развертывания на нескольких серверах?

Я изучал новые возможности сборки и развертывания TFS2010 с помощью MSDeploy. Пока все идет хорошо (хотя информацию о конкретных сценариях найти было сложно).

Могу ли я изменить определение сборки, указав 2 или более серверов для развертывания? Что мне нужно сделать, так это развернуть на нескольких серверах (поскольку у меня есть два в моей тестовой среде, которые используют NLB).

Теперь у меня есть определение сборки, которое выполняет сборку, запускает мои тесты, а затем развертывает на ОДИН из моих тестовых серверов (на котором работает MsDeployAgentService). Он отлично работает, и каждый веб-проект развертывается в соответствии с настройками в файле проекта. Я использую следующие аргументы MSBuild:

* /p:DeployOnBuild=True
* /p:DeployTarget=MsDeployPublish
* /p:MSDeployServiceURL=http://oawww.testserver1.com.au/MsDeployAgentService
* /p:CreatePackageOnPublish=True
* /p:MsDeployPublishMethod=RemoteAgent
* /p:AllowUntrustedCertificated=True
* /p:UserName=myusername
* /p:Password=mypassword 

NB: Я не использую / p: DeployIISAppPath = "xyz", поскольку он не развертывает все мои проекты и переопределяет конфигурацию моего проекта.

Могу ли я добавить еще один аргумент сборки, чтобы он вызывал более одного MSDeployServiceURL? Что-то вроде второго аргумента / p: MSDeployServiceURL, который указывает другой сервер?

Или мне нужно искать другое решение, например, редактировать WF?

Я видел почти точно такой же вопрос, размещенный здесь 2 месяца назад: TFS 2010 - Развертывание на нескольких серверах после сборки , поэтому не похоже, что я единственный, кто пытается решить эту проблему.

Я также разместил на форумах IIS.NET, где обсуждается MSDeploy: http://forums.iis.net/t/1170741.aspx . Было довольно много просмотров, но опять же никаких ответов.

9
задан Community 23 May 2017 в 12:01
поделиться

2 ответа

Я являюсь автором другого аналогичного поста. Мне еще предстоит найти решение. Я полагаю, что это будет изменение рабочего процесса, чтобы добавить задачу постобработки MSBUILD -sync. Это казалось самым элегантным, но все же надеялся найти что-то менее навязчивое.

0
ответ дан 4 December 2019 в 13:44
поделиться

Я не мог найти решение, которое искал, но вот что я в итоге придумал.

Я хотел, чтобы решение оставалось простым и настраиваемым в рамках аргументов TFS, в то же время оставаясь в соответствии с уже предоставленным методом MSBuildArguments , который активно продвигался. Поэтому я создал новый шаблон сборки и добавил новый аргумент TFS WorkFlow под названием MSBuildArguments2 на вкладке «Аргументы» рабочего процесса.

alt text

Я поискал в BuildTemplate WorkFlow все случаи появления MSBuildArguments (было два случая).

Две задачи, использующие аргументы MSBuild , называются Выполнить MSBuild для проекта . Непосредственно под этой задачей я добавил новый блок «If» с условием:

Not String.IsNullOrEmpty(MSBuildArguments2)

Затем я скопировал задачу «Run MSBuild for Project» и вставил ее в новый блок «Then» If, соответствующим образом обновив его заголовок. Вам также необходимо обновить свойство ConmmandLineArguments новой задачи, чтобы использовать новый аргумент.

CommandLineArguments = String.Format ("/ p: SkipInvalidConfigurations = true {0}", MSBuildArguments2)

После этих изменений рабочий процесс выглядит следующим образом:

alt text

Сохранить и вернуть новый рабочий процесс. Обновите определение сборки, чтобы использовать этот новый рабочий процесс, затем на вкладке «Процесс» определения сборки вы найдете новый раздел под названием «Разное» с новым аргументом, готовым к использованию.Поскольку я просто использую этот новый аргумент для развертывания, я скопировал те же самые аргументы, которые использовал для аргументов MSBuild , и обновил MSDeployServiceURL на моем втором сервере развертывания.

alt text

Вот и все. Я полагаю, что более элегантным методом было бы преобразовать MSBuildArguments в массив строк, а затем перебрать их в цикле во время процесса WorkFlow. Но это соответствует нашим двум требованиям к серверу.

Надеюсь, это поможет!

6
ответ дан 4 December 2019 в 13:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: