diff --git a/scripts/winterm/generate-winget-manifests.ps1 b/scripts/winterm/generate-winget-manifests.ps1 index 2acd8aedb..556974a6d 100644 --- a/scripts/winterm/generate-winget-manifests.ps1 +++ b/scripts/winterm/generate-winget-manifests.ps1 @@ -4,7 +4,7 @@ [CmdletBinding()] param( [Parameter(Mandatory)] - [ValidatePattern('^https://github\.com/HelloThisWorld/winTerm/releases/download/v1\.0\.1/winTerm-1\.0\.1-x64\.msix$')] + [ValidatePattern('^https://github\.com/HelloThisWorld/winTerm/releases/download/v1\.0\.2/winTerm-1\.0\.2-x64\.msix$')] [string]$InstallerUrl, [Parameter(Mandatory)] diff --git a/scripts/winterm/test-release-workflow.ps1 b/scripts/winterm/test-release-workflow.ps1 index a43d74c8d..6855ccf81 100644 --- a/scripts/winterm/test-release-workflow.ps1 +++ b/scripts/winterm/test-release-workflow.ps1 @@ -13,6 +13,8 @@ try { $workflowPath = Join-Path $repositoryRoot '.github\workflows\release.yml' $workflow = Get-Content -LiteralPath $workflowPath -Raw + $wingetGeneratorPath = Join-Path $repositoryRoot 'scripts\winterm\generate-winget-manifests.ps1' + $wingetGenerator = Get-Content -LiteralPath $wingetGeneratorPath -Raw foreach ($required in @( "push:", @@ -67,6 +69,13 @@ try throw 'Release workflow must not upload broad workspace globs.' } + $expectedWinGetInstallerPattern = "^https://github\.com/HelloThisWorld/winTerm/releases/download/v1\.0\.2/winTerm-1\.0\.2-x64\.msix$" + if (-not $wingetGenerator.Contains("[ValidatePattern('$expectedWinGetInstallerPattern')]") -or + $wingetGenerator.Contains('/v1\.0\.1/winTerm-1\.0\.1-x64\.msix')) + { + throw 'WinGet manifest generation does not accept only the current v1.0.2 public installer URL.' + } + Write-Host 'PASS: stable release workflow security and publication boundaries.' -ForegroundColor Green } catch