Развертывание приложения Service Fabric через конвейер выпуска VSTS с помощью размещенного агента

Я настроил непрерывную интеграцию с использованием размещенного агента для служебной структуры, следуя этому документу https://azure.microsoft.com/en-us/documentation/articles/service-fabric-set-up-continuous-integration/

В конвейере выпуска после импорта сертификата я получаю следующую ошибку и сбой развертывания. Я не могу определить причину проблемы  введите описание изображения здесь

[error] Произошла ошибка во время этой операции. Пожалуйста, проверьте журналы трассировки для получения более подробной информации.

Завершающая задача: ServiceFabricDeploy

[ошибка] System.Exception: не удалось выполнить задачу ServiceFabricDeploy.

Это привело к сбою работы. Подробности смотрите в журналах задания.

[ошибка] в Microsoft.TeamFoundation.DistributedTask.Worker.JobRunner.Run (IJobContext jobContext, IJobRequest job, IJobExtension jobExtension, CancellationTokenSource tokenSource)

В разделе «Задача развертывания служебной структуры» отображается следующая ошибка:  введите описание изображения здесь

Импортированный сертификат клиента кластера с отпечатком A6B32E70CFE715F608A247C1ED94AB3D0164A58E.

Тема отпечатка пальца

A6B32E70CFE715F608A247C1ED94AB3D0164A58E> CN = clusterternamedns.eastus.cloudapp.azure.com

[error] Произошла ошибка во время этой операции. Пожалуйста, проверьте журналы трассировки для получения более подробной информации.

Обновить

После установки для system.debug значения true в переменных я получил следующий журнал

    2016-08-03T05:44:31.6556865Z ##[debug]System.Fabric.FabricException: An error occurred during this operation.  Please check the trace logs for more details. ---> System.Runtime.InteropServices.COMException: No credentials are available in the security package (Exception from HRESULT: 0x8009030E)

2016-08-03T05:44:31.6566887Z ##[debug]   at System.Fabric.Interop.NativeClient.IFabricClientSettings2.SetSecurityCredentials(FABRIC_SECURITY_CREDENTIALS credentials)

2016-08-03T05:44:31.6577063Z ##[debug]   at System.Fabric.FabricClient.SetSecurityCredentialsInternal(SecurityCredentials credentials)

2016-08-03T05:44:31.6587072Z ##[debug]   at System.Fabric.Interop.Utility.WrapNativeSyncInvoke[TResult](Func`1 func, String functionTag, String functionArgs)

2016-08-03T05:44:31.6597111Z ##[debug]   --- End of inner exception stack trace ---

2016-08-03T05:44:31.6606871Z ##[debug]   at System.Fabric.Interop.Utility.RunInMTA[TResult](Func`1 func)

2016-08-03T05:44:31.6647953Z ##[debug]   at System.Fabric.FabricClient.InitializeFabricClient(SecurityCredentials credentialArg, FabricClientSettings newSettings, String[] hostEndpointsArg)

2016-08-03T05:44:31.6656886Z ##[debug]   at Microsoft.ServiceFabric.Powershell.ClusterConnection.FabricClientBuilder.Build()

2016-08-03T05:44:31.6666879Z ##[debug]   at Microsoft.ServiceFabric.Powershell.ClusterConnection..ctor(FabricClientBuilder fabricClientBuilder, Boolean getMetadata)

2016-08-03T05:44:31.6676869Z ##[debug]   at Microsoft.ServiceFabric.Powershell.ConnectCluster.ProcessRecord()

2016-08-03T05:44:31.6770225Z ##[debug]Leaving C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.103.1\tasks\ServiceFabricDeploy\1.0.1\deploy.ps1.

2016-08-03T05:44:31.6850322Z ##[debug]Caught exception from task script.

2016-08-03T05:44:31.6890370Z ##[debug]Error record:

2016-08-03T05:44:31.7380329Z ##[debug]Connect-ServiceFabricCluster : An error occurred during this operation.  Please check the trace logs for more details.

2016-08-03T05:44:31.7390333Z ##[debug]At C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.103.1\tasks\ServiceFabricDeploy\1.0.1\deploy.ps1:73 char:12

2016-08-03T05:44:31.7410325Z ##[debug]+     [void](Connect-ServiceFabricCluster @clusterConnectionParameters)

2016-08-03T05:44:31.7420325Z ##[debug]+            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2016-08-03T05:44:31.7430323Z ##[debug]    + CategoryInfo          : InvalidOperation: (:) [Connect-ServiceFabricCluster], FabricException

2016-08-03T05:44:31.7440363Z ##[debug]    + FullyQualifiedErrorId : CreateClusterConnectionErrorId,Microsoft.ServiceFabric.Powershell.ConnectCluster

2016-08-03T05:44:31.7450426Z ##[debug] 

2016-08-03T05:44:31.7470318Z ##[debug]Script stack trace:

2016-08-03T05:44:31.7500512Z ##[debug]at <ScriptBlock>, C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.103.1\tasks\ServiceFabricDeploy\1.0.1\deploy.ps1: line 73

2016-08-03T05:44:31.7910331Z ##[debug]at <ScriptBlock>, <No file>: line 1

2016-08-03T05:44:31.7920318Z ##[debug]at <ScriptBlock>, <No file>: line 22

2016-08-03T05:44:31.7930364Z ##[debug]at <ScriptBlock>, <No file>: line 18

2016-08-03T05:44:31.7940315Z ##[debug]at <ScriptBlock>, <No file>: line 1

2016-08-03T05:44:31.7960349Z ##[debug]Exception:

2016-08-03T05:44:31.8000522Z ##[debug]System.Fabric.FabricException: An error occurred during this operation.  Please check the trace logs for more details. ---> System.Runtime.InteropServices.COMException: No credentials are available in the security package (Exception from HRESULT: 0x8009030E)

2016-08-03T05:44:31.8010571Z ##[debug]   at System.Fabric.Interop.NativeClient.IFabricClientSettings2.SetSecurityCredentials(FABRIC_SECURITY_CREDENTIALS credentials)

2016-08-03T05:44:31.8020684Z ##[debug]   at System.Fabric.FabricClient.SetSecurityCredentialsInternal(SecurityCredentials credentials)

2016-08-03T05:44:31.8030335Z ##[debug]   at System.Fabric.Interop.Utility.WrapNativeSyncInvoke[TResult](Func`1 func, String functionTag, String functionArgs)

2016-08-03T05:44:31.8040334Z ##[debug]   --- End of inner exception stack trace ---

2016-08-03T05:44:31.8060326Z ##[debug]   at System.Fabric.Interop.Utility.RunInMTA[TResult](Func`1 func)

2016-08-03T05:44:31.8070343Z ##[debug]   at System.Fabric.FabricClient.InitializeFabricClient(SecurityCredentials credentialArg, FabricClientSettings newSettings, String[] hostEndpointsArg)

2016-08-03T05:44:31.8080330Z ##[debug]   at Microsoft.ServiceFabric.Powershell.ClusterConnection.FabricClientBuilder.Build()

2016-08-03T05:44:31.8090325Z ##[debug]   at Microsoft.ServiceFabric.Powershell.ClusterConnection..ctor(FabricClientBuilder fabricClientBuilder, Boolean getMetadata)

2016-08-03T05:44:31.8100358Z ##[debug]   at Microsoft.ServiceFabric.Powershell.ConnectCluster.ProcessRecord()

2016-08-03T05:44:31.8340330Z ##[error]An error occurred during this operation.  Please check the trace logs for more details.

comment
Добавьте переменную с именем system.debug на вкладку «Переменные» в определении выпуска и установите для нее значение true. Затем попробуйте создать другой выпуск. В журнале должно быть намного больше отладочной информации. Пожалуйста, поделитесь этим.   -  person Matt Thalman    schedule 02.08.2016
comment
Кроме того, вы запускаете это на размещенном агенте или настраиваете свой собственный агент?   -  person Matt Thalman    schedule 02.08.2016
comment
Можете ли вы запустить сборку с переменной system.debug, для которой установлено значение true, как упоминал Мэтт, а затем предоставил подробные журналы?   -  person Eddie Chen - MSFT    schedule 03.08.2016
comment
Спасибо за ответы, я обновил свой вопрос отладочной информацией. Пожалуйста, проверьте это сейчас.   -  person narendramacha    schedule 03.08.2016
comment
Я использую размещенный агент.   -  person narendramacha    schedule 03.08.2016
comment
Какой тип проверки подлинности вы настроили в кластере Azure Service Fabric?   -  person Eddie Chen - MSFT    schedule 03.08.2016
comment
Аутентификация на основе сертификатов   -  person narendramacha    schedule 04.08.2016
comment
Сертификат проецируется паролем, и вы настроили его в конечной точке службы? Согласно журналам, на этапе сборки не удалось подключиться к сервисному кластеру.   -  person Eddie Chen - MSFT    schedule 10.08.2016


Ответы (2)


Нарендрамача

Я думаю, что проблема здесь может заключаться в том, что вы используете Base64 файла сертификата cer на конечной точке SF, а не Base64 файла PFX (который обычно защищен паролем).

person ossentoo    schedule 19.06.2018

Приведенные ниже сценарии PowerShell помогают преобразовать файл PFX в строку Base64. Он выводит строку в текстовый файл.

$fileContentBytes = get-content 'C:\<your-certificate>.pfx' -Encoding Byte

[System.Convert]::ToBase64String($fileContentBytes) | Out-File 'C:\pfx-bytes.txt'

Однако, когда вы открываете файл (содержащий строку Base64) в блокноте и выполняете операцию выбора всего (CTRL + A), дополнительная строка (разрыв) в конце файла копируется. Эта дополнительная строка вставляется при добавлении сертификата клиента во время создания подключения службы кластера для задачи развертывания приложения Service Fabric.

Удалите эту лишнюю строку, и она должна работать. Надеюсь, этот ответ тоже поможет.

Разрыв строки при создании подключения службы кластера

person Darshan Sudhakar    schedule 31.01.2019