3
votes

I have set up continuous integration using Hosted Agent for service fabric by following this document https://azure.microsoft.com/en-us/documentation/articles/service-fabric-set-up-continuous-integration/

In Release pipeline after importing certificate I am getting the following error and deployment failing. I am not able to identify where the issue is enter image description here

[error]An error occurred during this operation. Please check the trace logs for more details.

Finishing task: ServiceFabricDeploy

[error]System.Exception: Task ServiceFabricDeploy failed.

This caused the job to fail. Look at the logs for the task for more details.

[error] at Microsoft.TeamFoundation.DistributedTask.Worker.JobRunner.Run(IJobContext jobContext, IJobRequest job, IJobExtension jobExtension, CancellationTokenSource tokenSource)

Under Deploy service fabric task it is showing the below error enter image description here

Imported cluster client certificate with thumbprint 'A6B32E70CFE715F608A247C1ED94AB3D0164A58E'.

Thumbprint Subject

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

[error]An error occurred during this operation. Please check the trace logs for more details.

Update

After setting system.debug to true in variables, I got the following log

    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.
2
Add a variable named "system.debug" to the Variables tab of your release definition and set it to true. Then try to create another release. There should be a lot more debug info provided in the log. Please share that. - Matt Thalman
Also, are you running this on a hosted agent or have you setup your own custom agent? - Matt Thalman
Can you run the build with "system.debug" variable set to "true" as Matt mentioned and then provided the detailed logs? - Eddie Chen - MSFT
Thanks for the replies, I updated my question with debug information. Please check it now. - narendramacha
I am using Hosted Agent. - narendramacha

2 Answers

4
votes

narendramacha

I think the problem here could be that you are using the Base64 of the cer certificate file on the SF endpoint, rather than Base64 of the PFX file (which is normally protected by a password).

3
votes

The below PowerShell scripts help in converting the PFX file to Base64 string. It outputs the string to a text file.

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

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

However, when you open the file (that contains Base64 string) in notepad and do a select all (CTRL + A) operation, an extra line (break) at the end of the file gets copied. This extra line gets pasted while adding the Client certificate during the creation of Cluster Service Connection for the task Service Fabric Application Deployment.

Delete that extra line and it should work. I hope this answer helps as well.

Line break while creating Cluster Service Connection