| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- param(
- [Parameter(ValueFromRemainingArguments = $true)]
- [string[]] $Path
- )
- $ErrorActionPreference = "Stop"
- if (-not $Path -or $Path.Count -eq 0) {
- throw "At least one path is required"
- }
- if ($env:GITHUB_ACTIONS -ne "true") {
- Write-Host "Skipping Windows signing because this is not running on GitHub Actions"
- exit 0
- }
- $vars = @{
- endpoint = $env:AZURE_TRUSTED_SIGNING_ENDPOINT
- account = $env:AZURE_TRUSTED_SIGNING_ACCOUNT_NAME
- profile = $env:AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE
- }
- if ($vars.Values | Where-Object { -not $_ }) {
- Write-Host "Skipping Windows signing because Azure Artifact Signing is not configured"
- exit 0
- }
- $moduleVersion = "0.5.8"
- $module = Get-Module -ListAvailable -Name TrustedSigning | Where-Object { $_.Version -eq [version] $moduleVersion }
- if (-not $module) {
- try {
- Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force -Scope CurrentUser | Out-Null
- }
- catch {
- Write-Host "NuGet package provider install skipped: $($_.Exception.Message)"
- }
- Install-Module -Name TrustedSigning -RequiredVersion $moduleVersion -Force -Repository PSGallery -Scope CurrentUser
- }
- Import-Module TrustedSigning -RequiredVersion $moduleVersion -Force
- $files = @($Path | ForEach-Object { Resolve-Path $_ -ErrorAction SilentlyContinue } | Select-Object -ExpandProperty Path -Unique)
- if (-not $files -or $files.Count -eq 0) {
- throw "No files matched the requested paths"
- }
- $params = @{
- Endpoint = $vars.endpoint
- CodeSigningAccountName = $vars.account
- CertificateProfileName = $vars.profile
- Files = ($files -join ",")
- FileDigest = "SHA256"
- TimestampDigest = "SHA256"
- TimestampRfc3161 = "http://timestamp.acs.microsoft.com"
- ExcludeEnvironmentCredential = $true
- ExcludeWorkloadIdentityCredential = $true
- ExcludeManagedIdentityCredential = $true
- ExcludeSharedTokenCacheCredential = $true
- ExcludeVisualStudioCredential = $true
- ExcludeVisualStudioCodeCredential = $true
- ExcludeAzureCliCredential = $false
- ExcludeAzurePowerShellCredential = $true
- ExcludeAzureDeveloperCliCredential = $true
- ExcludeInteractiveBrowserCredential = $true
- }
- Invoke-TrustedSigning @params
|