diff --git a/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 b/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 index 08285bfbea0..2e623672dae 100644 --- a/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 +++ b/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 @@ -11,7 +11,7 @@ param( This script helps to mark release plan completion by finding the active release plans for a package name .PARAMETER PackageInfoFilePath - The path to the package information file (required) + The path to the package information file (required) or path to the directory containing package information files. #> Set-StrictMode -Version 3 @@ -25,34 +25,45 @@ if (-Not (Test-Path $PackageInfoFilePath)) Write-Host "Package information file path $($PackageInfoFilePath) is invalid." exit 0 } -# Get package info from json file created before updating version to daily dev -$pkgInfo = Get-Content $PackageInfoFilePath | ConvertFrom-Json -$PackageVersion = $pkgInfo.Version -$PackageName = $pkgInfo.Name -if (!$PackageName -or !$PackageVersion) -{ - Write-Host "Package name or version is not available in the package information file. Skipping the release plan status update for the package." - exit 0 -} -# Check Azure DevOps Release Plan work items if LanguageShort is available -Write-Host "Checking active release plan work items for package: $PackageName" -$workItems = Get-ReleasePlanForPackage $PackageName -if(!$workItems) +function Process-Package([string]$packageInfoPath) { - Write-Host "No active release plans found for package name: $PackageName." - exit 0 -} + # Get package info from json file created before updating version to daily dev + $pkgInfo = Get-Content $packageInfoPath | ConvertFrom-Json + $PackageVersion = $pkgInfo.Version + $PackageName = $pkgInfo.Name + if (!$PackageName -or !$PackageVersion) + { + Write-Host "Package name or version is not available in the package information file. Skipping the release plan status update for the package." + return + } + + # Check Azure DevOps Release Plan work items + Write-Host "Checking active release plan work items for package: $PackageName" + $workItems = Get-ReleasePlanForPackage $PackageName + if(!$workItems) + { + Write-Host "No active release plans found for package name: $PackageName." + return + } -$activeReleasePlan = $workItems -if($workItems.Count -gt 1 -and ($workItems -is [System.Array])) -{ - $concatenatedIds = ($workItems | Select-Object -ExpandProperty id) -join ',' - Write-Host "Multiple release plans found for package name: $PackageName with work item IDs: $concatenatedIds. Using the first release plan to update release status." - $activeReleasePlan = $workItems[0] + $activeReleasePlan = $workItems + if($workItems.Count -gt 1 -and ($workItems -is [System.Array])) + { + $concatenatedIds = ($workItems | Select-Object -ExpandProperty id) -join ',' + Write-Host "Multiple release plans found for package name: $PackageName with work item IDs: $concatenatedIds. Using the first release plan to update release status." + $activeReleasePlan = $workItems[0] + } + # Update release status + Write-Host "Release plan work item ID: $($activeReleasePlan["id"])" + Write-Host "Marking release completion for package, name: $PackageName version: $PackageVersion" + Update-ReleaseStatusInReleasePlan $activeReleasePlan.id "Released" $PackageVersion + Write-Host "Successfully marked release completion for package, name: $PackageName version: $PackageVersion." } -# Update release status -Write-Host "Release plan work item ID: $($activeReleasePlan["id"])" -Write-Host "Marking release completion for package, name: $PackageName version: $PackageVersion" -Update-ReleaseStatusInReleasePlan $activeReleasePlan.id "Released" $PackageVersion -Write-Host "Successfully marked release completion for package, name: $PackageName version: $PackageVersion." + +Write-Host "Finding all package info files in the path: $PackageInfoFilePath" +# Get all package info file under the directory given in input param and process +Get-ChildItem -Path $PackageInfoFilePath -Filter "*.json" | ForEach-Object { + Write-Host "Processing package info file: $_" + Process-Package $_.FullName +} \ No newline at end of file