From e5457715b08a865243f5958f8f6f9bd7a93685df Mon Sep 17 00:00:00 2001 From: Praveen Kuttappan Date: Fri, 22 Aug 2025 14:01:41 -0400 Subject: [PATCH 1/3] Update package release status completion to process multiple packages --- .../scripts/Mark-ReleasePlanCompletion.ps1 | 75 ++++++++++++------- 1 file changed, 48 insertions(+), 27 deletions(-) diff --git a/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 b/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 index 08285bfbea..1c8e91e6fb 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,55 @@ 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 if LanguageShort is available + 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] + } + # 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." } -$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] +$InfoFileName = Split-Path $PackageInfoFilePath -Leaf +# Process the package if given path is package info file +if ($InfoFileName -like "*.json") +{ + Write-Host "Processing package info file: $PackageInfoFilePath" + Process-Package $PackageInfoFilePath } -# 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." +else +{ + Write-Host "Finding all package info files in directory: $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 From 6c079b5848e915c8a7d8b6621b672193da344b4e Mon Sep 17 00:00:00 2001 From: Praveen Kuttappan Date: Fri, 22 Aug 2025 16:42:04 -0400 Subject: [PATCH 2/3] Updated as per review comments --- .../scripts/Mark-ReleasePlanCompletion.ps1 | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 b/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 index 1c8e91e6fb..23a34d47ea 100644 --- a/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 +++ b/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 @@ -38,7 +38,7 @@ function Process-Package([string]$packageInfoPath) return } - # Check Azure DevOps Release Plan work items if LanguageShort is available + # Check Azure DevOps Release Plan work items Write-Host "Checking active release plan work items for package: $PackageName" $workItems = Get-ReleasePlanForPackage $PackageName if(!$workItems) @@ -57,23 +57,13 @@ function Process-Package([string]$packageInfoPath) # 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 + Update-ReleaseStatusInReleasePlan $activeReleasePlan.id "Released" $PackageVersion Write-Host "Successfully marked release completion for package, name: $PackageName version: $PackageVersion." } -$InfoFileName = Split-Path $PackageInfoFilePath -Leaf -# Process the package if given path is package info file -if ($InfoFileName -like "*.json") -{ - Write-Host "Processing package info file: $PackageInfoFilePath" - Process-Package $PackageInfoFilePath -} -else -{ - Write-Host "Finding all package info files in directory: $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 - } +Write-Host "Finding all package info files in directory: $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 From 99cd60ee29a14002df15e8c0cbb2b8811891f255 Mon Sep 17 00:00:00 2001 From: Praveen Kuttappan Date: Fri, 22 Aug 2025 16:43:41 -0400 Subject: [PATCH 3/3] Updated as per review comments --- eng/common/scripts/Mark-ReleasePlanCompletion.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 b/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 index 23a34d47ea..2e623672da 100644 --- a/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 +++ b/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 @@ -61,7 +61,7 @@ function Process-Package([string]$packageInfoPath) Write-Host "Successfully marked release completion for package, name: $PackageName version: $PackageVersion." } -Write-Host "Finding all package info files in directory: $PackageInfoFilePath" +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: $_"