0
votes

I am trying to configure a jenkins windows slave msbuild tasks on, but I am having issues with click once projects and its strongly named keys.

Depending on which account installs the PFX key, it depends on what the results and errors are.

BACKGROUND:

Projects (ProjectX and ProjectY)

  • .net 4
  • ClickOnce app
  • uses a pfx key "ABC.pfx" to sign the assembly

Jenkins Windows Slave:

  • the Jenkins windows service runs under the user account "[email protected]"
  • As jenkins creates a workspace for each project and branch, we copied the "ABC.pfx" file to c:\

ATTEMPTED RESOLUTION 1:

I remote desktop onto server with my user account:

  • copy ABC.pfx onto the server at C:\
  • Run command prompt as Administrator

    cd c:\ "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\sn.exe" -d VS_KEY_123456789 "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\sn.exe" -i ABC.pfx VS_KEY_123456789

  • Open normal command prompt and run (ClickOnce projects have build, then publish msbuild commands):

    "C:/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe" "c:/jenkins/workspace/project-x/ProjectX/ProjectX.sln" "/verbosity:normal" /p:configuration="release" /p:outdir="c:/jenkins/workspace/project-x/output/ProjectX/" "/target:Clean;Build" /maxcpucount

    "C:/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe" "c:/jenkins/workspace/project-x/ProjectX/ProjectX.sln" "/verbosity:normal" /p:configuration="release" /p:outdir="c:/jenkins/workspace/project-x/output/ProjectX/" "/target:Publish" /maxcpucount

  • Both of the msbuid command run fine for me

  • When run under the Jenkins account we get the error:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2482,5): error MSB3326: Cannot import the following key file: ABC.pfx. The key file may be password protected. To correct this, try to import the certificate again or import the certificate manually into the current user's personal certificate store. [c:\jenkins\workspace\project-x\ProjectX\ProjectX.csproj]

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2482,5): error MSB3321: Importing key file "ABC.pfx" was canceled. [c:\jenkins\workspace\project-x\ProjectX\ProjectX.csproj]

ATTEMPTED RESOLUTION 2:

I remote desktop onto server with the Jenkins user account

  • copy ABC.pfx onto the server at C:\
  • Run command prompt as Administrator

    cd c:\ "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\sn.exe" -d VS_KEY_123456789 "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\sn.exe" -i ABC.pfx VS_KEY_123456789

  • Open normal command prompt and run:

    "C:/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe" "c:/jenkins/workspace/project-x/ProjectX/ProjectX.sln" "/verbosity:normal" /p:configuration="release" /p:outdir="c:/jenkins/workspace/project-x/output/ProjectX/" "/target:Clean;Build" /maxcpucount

  • Jenkins user account gets the error:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2482,5): error MSB3326: Cannot import the following key file: ABC.pfx. The key file may be password protected. To correct this, try to import the certificate again or import the certificate manually into the current user's personal certificate store. [c:\jenkins\workspace\project-x\ProjectX\ProjectX.csproj] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2482,5): error MSB3321: Importing key file "ABC.pfx" was canceled. [c:\jenkins\workspace\project-x\ProjectX\ProjectX.csproj]

  • I also get a build error

Does anyone have any idea how to get the Jenkins user account to acknowledge the PFX key?

Thanks for any help, Sandra

1

1 Answers

0
votes

Finally I found the issue and solution to this, and thought I'd put it up if someone else was having a similar issue.

We cloned the build servers that the strongly named keys were on. After they were cloned all the keys and Click Once apps broke. No matter what we did we couldn't remove the old keys and reinstall them.

After building a new build server up from scratch and manually installing the PFX keys on the new server, everything worked again.

So for some reason, cloning servers does not clone pfx keys properly.