chore: initialize qiming workspace repository
This commit is contained in:
70
qimingcode/script/sign-windows.ps1
Normal file
70
qimingcode/script/sign-windows.ps1
Normal file
@@ -0,0 +1,70 @@
|
||||
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
|
||||
Reference in New Issue
Block a user