Не удалось развернуть приложение Service Fabric в удаленном кластере Azure из непрерывной интеграции VSTS.

Я настроил сборку CI для приложения Service Fabric в Visual Studio Team Services в соответствии с этой документацией: https://azure.microsoft.com/en-us/documentation/articles/service-fabric-set-up-continuous-integration.

Однако я изменил часть развертывания, указанную в документе выше. Поскольку я хочу выполнить развертывание в моем ранее созданном удаленном кластере Azure, я вызываю Deploy-FabricApplication.ps1 с необходимыми параметрами, используя Power Shell. Но, к сожалению, это не работает. Я получаю следующую ошибку:

[void] (Connect-ServiceFabricCluster @ClusterConnectionParameters) InvalidOperation: (:) [Connect-ServiceFabricCluster], FabricException FullyQualifiedErrorId: CreateClusterConnectionErrorId, Microsoft.ServiceFabric.Powershell.ConnectCluster

ПРЕДУПРЕЖДЕНИЕ. Невозможно проверить подключение к кластеру Service Fabric.

[ошибка] Test-ServiceFabricClusterConnection: экземпляр подключения к кластеру имеет значение null [ошибка] в C:\Program Files\Microsoft SDKs\Service [ошибка]Fabric\Tools\PSModule\ServiceFabricSDK\Publish-NewServiceFabricApplication.ps1:119 char:16 void: ResourceUnavailable : (:) [Test-ServiceFabricClusterConnection], NullReferenceException FullyQualifiedErrorId: GetClusterConnectionErrorId,Microsoft.ServiceFabric.Powershell.TestClusterConnection

Я могу успешно развернуть с помощью Visual Studio. Даже если я запускаю Deploy-FabricApplication.ps1 со сборочной машины с помощью Power Shell, приложение развертывается без ошибок. Но только если я запускаю его с помощью шага сборки VSTS (часть CI), возникает ошибка, упомянутая выше.

Обратите внимание, что в соответствии с предложением Charisk в другом потоке stackoverflow я изменил файл Deploy-FabricApplication.ps1, добавив следующую строку после строки 169. $global:clusterConnection = $clusterConnection

Это тоже не помогает. Заранее спасибо за вашу помощь.


comment
Какую задачу вы используете для запуска сценария power-shell? Powershell или Azure Powershell? Вы пробовали решение в этом потоке: использование чистой задачи сборки powershell обеспечило выполнение сценария с использованием файла . (точечная) нотация, которая работала как шарм.?   -  person Eddie Chen - MSFT    schedule 11.04.2016
comment
я использую пауэршелл   -  person user1814131    schedule 11.04.2016
comment
Я думаю, что проблема связана с . (точечное) обозначение. Я только что указал путь для Deploy-FabricApplication.ps1 по умолчанию в задаче сборки vsts. Я также передал некоторые параметры. Как я могу убедиться, что скрипт будет выполняться с использованием записи через точку? Я считаю, что вызов - это случай в моем сценарии вместо точечного поиска.   -  person user1814131    schedule 11.04.2016


Ответы (2)


В вашем профиле публикации http://s30.postimg.org/bttleqitd/cloud.jpg вы используете StoreLocation="CurrentUser", но если вы следовали https://azure.microsoft.com/en-us/documentation/articles/service-fabric-set-up-continuous-integration и, в частности, раздел Импорт сертификата автоматизации в разделе Настройте машину для сборки, тогда вы, вероятно, импортировали свой сертификат в LocalMachine расположение хранилища.

Просто измените StoreLocation в своем профиле публикации с CurrentUser на LocalMachine, и все готово.

person jimmystormig    schedule 24.05.2016
comment
Именно это и было причиной. Благодаря тонну :) - person user1814131; 26.05.2016

точечная исходная нотация означает вызов скрипта с расширением . "xxx.ps1". Подробнее см. по этой ссылке: PowerShell — что такое точечный поиск и зачем его использовать?

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

person Eddie Chen - MSFT    schedule 12.04.2016
comment
Я уже пробовал нечто подобное. Использовал встроенный сценарий для задачи PowerShell и использовал следующую команду powershell. . ./Deploy-FabricApplication.ps1 -ApplicationPackagePath 'C:\agent_work\1\s\TestApp\pkg\Release' -PublishProfileFile 'C:\agent_work\1\s\TestApp\PublishProfiles\Cloud.xml' -DeployOnly:$false -UnregisterUnusedApplicationVersionsAfterUpgrade $false -OverrideUpgradeBehavior 'Нет' -OverwriteBehavior 'SameAppTypeAndVersion' -ErrorAction Stop; Рабочий каталог был установлен в каталог сценария. Еще не повезло! - person user1814131; 12.04.2016
comment
@user1814131 user1814131 Попробуйте использовать этот формат: (. './Deploy-FabricApplication.ps1'). Вещи между(). - person Eddie Chen - MSFT; 12.04.2016
comment
Не повезло ... Из события зритель я получил следующее сообщение об ошибке: транспорт 0x17FA9CEFF0: не удалось настройки набора безопасности для {Provider = защита SSL = EncryptAndSign магазин = 'CurrentUser / My' findValue = 'FindByThumbprint: 9c3b3216282cf97d22c9f0518d268ee408a06e31' remoteCertThumbprints = '9c3b3216282cf97d22c9f0518d268ee408a06e31' clientRoleEnabled=false ClaimBasedClientAuthEnabled=false }: CertificateNotFound - person user1814131; 12.04.2016
comment
Вот журнал ошибок в сборке VSTS: Connect-ServiceFabricCluster: во время этой операции произошла ошибка. Дополнительные сведения см. в журналах трассировки. В C:\agent_work\2\s\TestApp\Scripts\Deploy-FabricApplication.ps1:172 char:16 + [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - person user1814131; 12.04.2016
comment
Другая часть ошибки: + CategoryInfo: InvalidOperation: (:) [Connect-ServiceFabricCluster], FabricException + FullyQualifiedErrorId: CreateClusterConnectionErrorId, Microsoft.ServiceFabric.Powershell.ConnectCluster Test-ServiceFabricClusterConnection: экземпляр подключения к кластеру имеет значение null - person user1814131; 12.04.2016
comment
В C:\Program Files\Microsoft SDK\Service Fabric\Tools\PSModule\ServiceFabricSDK\Publish-NewServiceFabricApplication.ps1:119 char:16 + [void](Test-ServiceFabricClusterConnection) + CategoryInfo : ResourceUnreachable: (:) [Test-ServiceFabricClusterConnection ], NullReferenceException + FullyQualifiedErrorId: etClusterConnectionErrorId,Microsoft.ServiceFabric.Powershell.TestClusterConnection Ошибка была достаточно длинной, поэтому представлена ​​в этих 3 комментариях - person user1814131; 12.04.2016
comment
@ user1814131 Это странно. У меня не было никаких проблем на моей стороне. Я проведу дополнительное расследование по этому вопросу. Кстати, я добавил свои настройки в ответ для справки. - person Eddie Chen - MSFT; 12.04.2016
comment
Я сделал точно так же. Вот ссылка на изображение ошибки vsts - s29.postimg. org/kxo6zauon/Capture.jpg Есть ли что-то связанное с сертификатами? Я импортировал файл pfx и скопировал его в папку доверенных лиц. Также предоставлено разрешение учетной записи сетевой службы на использование моего сертификата. Расположение моего магазина — CurrentUser. У меня нет никакой подсказки, чтобы решить эту проблему. - person user1814131; 12.04.2016
comment
Вот изображение параметров подключения к кластеру, используемых в cloud.xml s30.postimg.org/bttleqitd/cloud .jpg Вот ошибка, которую я получаю в средстве просмотра событий на виртуальной машине сборки s18.postimg .org/ei3y0egw9/error.jpg Это для вашего сведения. @Эдди - MSFT - person user1814131; 12.04.2016
comment
@ user1814131 Согласно журналам ошибок VSTS, проблема отличается от проблемы с записью через точку. В вашем случае соединение не установлено при подключении к сервисному кластеру farbic, поэтому, когда powershell проверяет соединение, оно получает нулевую ошибку соединения. Поскольку вы говорите, что при запуске сценария powershell напрямую с машины сборки нет ошибки. Я бы порекомендовал вам настроить службу сборки для запуска с учетной записью, с которой вы запускаете сценарий powershell, и повторить попытку развертывания. - person Eddie Chen - MSFT; 13.04.2016
comment
@ user1814131 И вы также можете обратиться к этой ссылке, чтобы добавить сертификацию для учетной записи сетевой службы: stackoverflow.com/questions/5695339/ - person Eddie Chen - MSFT; 13.04.2016
comment
Какую задачу сборки вы используете для вызова сценария PowerShell? Я считаю, что базовая задача PowerShell использует точечный источник, а задача Azure PowerShell — нет. - person Matt Thalman; 25.05.2016