diff --git a/eng/common/scripts/Verify-ChangeLogs.ps1 b/eng/common/scripts/Verify-ChangeLogs.ps1 index fbf117d5b..1aeb33a52 100644 --- a/eng/common/scripts/Verify-ChangeLogs.ps1 +++ b/eng/common/scripts/Verify-ChangeLogs.ps1 @@ -7,6 +7,32 @@ Set-StrictMode -Version 3 . (Join-Path $PSScriptRoot common.ps1) +function ShouldVerifyChangeLog ($ServiceDirectory, $PackageName) { + $jsonCiYmlPath = Join-Path $ServiceDirectory "ci.yml" + + if (Test-Path $jsonCiYmlPath) + { + $ciYml = Get-Content $jsonCiYmlPath -Raw | yq -o=json | ConvertFrom-Json -AsHashTable + + if ($ciYml.extends -and $ciYml.extends.parameters -and $ciYml.extends.parameters.Artifacts) { + $packagesCheckingChangeLog = $ciYml.extends.parameters.Artifacts ` + | Where-Object { -not ($_["skipVerifyChangelog"] -eq $true) } ` + | Select-Object -ExpandProperty name + if ($packagesCheckingChangeLog -contains $PackageName) + { + return $true + } else { + return $false + } + } + } +} + +if (-not (Get-Command 'yq' -ErrorAction SilentlyContinue)) { + Write-Host "Error: 'yq' is not installed or not found in PATH. Please remedy this before running this script." + exit 1 +} + # find which packages we need to confirm the changelog for $packageProperties = Get-ChildItem -Recurse "$PackagePropertiesFolder" *.json @@ -15,6 +41,11 @@ $allPassing = $true foreach($propertiesFile in $packageProperties) { $PackageProp = Get-Content -Path $propertiesFile | ConvertFrom-Json + if (-not (ShouldVerifyChangeLog -ServiceDirectory (Join-Path $RepoRoot "sdk" $PackageProp.ServiceDirectory) -PackageName $PackageProp.Name)) { + Write-Host "Skipping changelog verification for $($PackageProp.Name)" + continue + } + $validChangeLog = Confirm-ChangeLogEntry -ChangeLogLocation $PackageProp.ChangeLogPath -VersionString $PackageProp.Version -ForRelease $false if (-not $validChangeLog) { @@ -22,7 +53,6 @@ foreach($propertiesFile in $packageProperties) { } } - if (!$allPassing) { exit 1