11parameters :
22 Include : ' *'
33 Exclude : ' '
4+ Filter : ' '
45 WorkingDir : ' $(Build.BinariesDirectory)'
56 ExtractDir : ' '
67 SigningCertificate : ' '
78 ExportCommand : ' '
9+ ContinueOnError : false
810
911steps :
1012- ${{ if parameters.SigningCertificate }} :
1113 - powershell : |
12- cd (mkdir -Force _signing)
13- iwr https://aka.ms/nugetclidl -o nuget.exe
14- .\nuget.exe install Microsoft.Windows.SDK.BuildTools -x -o .
15- .\nuget.exe install Microsoft.Trusted.Signing.Client -x -o .
16- $md = @{
17- Endpoint='$(TrustedSigningUri)';
18- CodeSigningAccountName='$(TrustedSigningAccount)';
19- CertificateProfileName='$(TrustedSigningCertificateName)';
20- CorrelationId='$(SigningDescription)';
21- ExcludeEnvironmentCredential=$false;
22- ExcludeManagedIdentityCredential=$true;
23- ExcludeSharedTokenCacheCredential=$true;
24- ExcludeVisualStudioCredential=$true;
25- ExcludeVisualStudioCodeCredential=$true;
26- ExcludeAzureCliCredential=$true;
27- ExcludeAzurePowershellCredential=$true;
28- ExcludeInteractiveBrowserCredential=$true;
29- };
30- # ConvertTo-Json $md | Out-File -Encoding UTF8 .\metadata.json
31- # but without including the BOM...
32- [System.IO.File]::WriteAllText("$(Get-Location)\metadata.json", (ConvertTo-Json $md), [System.Text.UTF8Encoding]::new($false))
14+ dotnet tool install --global --prerelease sign
15+ $signtool = (gcm sign).Source
16+ $signargs = 'code trusted-signing -v Information ' + `
17+ '-fd sha256 -t http://timestamp.acs.microsoft.com -td sha256 ' + `
18+ '-tse "$(TrustedSigningUri)" -tsa "$(TrustedSigningAccount)" -tscp "$(TrustedSigningCertificateName)" ' + `
19+ '-d "$(SigningDescription)" '
3320
34- $signtool = dir .\Microsoft.Windows.SDK.BuildTools\*\*\x64\signtool.exe | select -First 1
35- $dlib = dir .\Microsoft.Trusted.Signing.Client\*\x64\Azure.CodeSigning.Dlib.dll | select -First 1
36- $signargs = "sign /v /fd sha256 /tr http://timestamp.acs.microsoft.com /td sha256 " + `
37- "/dlib ""$dlib"" /dmdf ""$(gi metadata.json)"""
3821 Write-Host "##vso[task.setvariable variable=__TrustedSigningCmd]$signtool"
3922 Write-Host "##vso[task.setvariable variable=__TrustedSigningArgs]$signargs"
4023 if ($env:EXPORT_COMMAND) {
@@ -53,16 +36,30 @@ steps:
5336 } else {
5437 $files = (dir ${{ parameters.Include }} -File)
5538 }
56- & $env:TRUSTED_SIGNING_CMD @(-split $env:TRUSTED_SIGNING_ARGS) $files
39+ if ($env:FILTER) {
40+ ($env:FILTER -split ';') -join "`n" | Out-File __filelist.txt -Encoding utf8
41+ } else {
42+ "*" | Out-File __filelist.txt -Encoding utf8
43+ }
44+ foreach ($f in $files) {
45+ & $env:TRUSTED_SIGNING_CMD @(-split $env:TRUSTED_SIGNING_ARGS) -fl __filelist.txt $f
46+ if (-not $?) { exit $LASTEXITCODE }
47+ }
48+ del __filelist.txt
5749 displayName: 'Sign binaries'
58- retryCountOnTaskFailure: 3
50+ ${{ if eq(parameters.ContinueOnError, 'false') }}:
51+ retryCountOnTaskFailure: 3
52+ ${{ else }}:
53+ continueOnError: true
5954 workingDirectory: ${{ parameters.WorkingDir }}
6055 env:
6156 TRUSTED_SIGNING_CMD: $(__TrustedSigningCmd)
6257 TRUSTED_SIGNING_ARGS: $(__TrustedSigningArgs)
6358 AZURE_TENANT_ID: $(TrustedSigningTenantId)
6459 AZURE_CLIENT_ID: $(TrustedSigningClientId)
6560 AZURE_CLIENT_SECRET: $(TrustedSigningSecret)
61+ ${{ if parameters.Filter }}:
62+ FILTER: ${{ parameters.Filter }}
6663
6764
6865 - ${{ if parameters.ExtractDir }} :
0 commit comments