Skip to content

Commit 46d53d2

Browse files
praveenkuttappanazure-sdk
authored andcommitted
Update package release status completion to process multiple packages
1 parent d02db4d commit 46d53d2

File tree

1 file changed

+48
-27
lines changed

1 file changed

+48
-27
lines changed

eng/common/scripts/Mark-ReleasePlanCompletion.ps1

Lines changed: 48 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ param(
1111
This script helps to mark release plan completion by finding the active release plans for a package name
1212
1313
.PARAMETER PackageInfoFilePath
14-
The path to the package information file (required)
14+
The path to the package information file (required) or path to the directory containing package information files.
1515
#>
1616

1717
Set-StrictMode -Version 3
@@ -25,34 +25,55 @@ if (-Not (Test-Path $PackageInfoFilePath))
2525
Write-Host "Package information file path $($PackageInfoFilePath) is invalid."
2626
exit 0
2727
}
28-
# Get package info from json file created before updating version to daily dev
29-
$pkgInfo = Get-Content $PackageInfoFilePath | ConvertFrom-Json
30-
$PackageVersion = $pkgInfo.Version
31-
$PackageName = $pkgInfo.Name
32-
if (!$PackageName -or !$PackageVersion)
33-
{
34-
Write-Host "Package name or version is not available in the package information file. Skipping the release plan status update for the package."
35-
exit 0
36-
}
3728

38-
# Check Azure DevOps Release Plan work items if LanguageShort is available
39-
Write-Host "Checking active release plan work items for package: $PackageName"
40-
$workItems = Get-ReleasePlanForPackage $PackageName
41-
if(!$workItems)
29+
function Process-Package([string]$packageInfoPath)
4230
{
43-
Write-Host "No active release plans found for package name: $PackageName."
44-
exit 0
31+
# Get package info from json file created before updating version to daily dev
32+
$pkgInfo = Get-Content $packageInfoPath | ConvertFrom-Json
33+
$PackageVersion = $pkgInfo.Version
34+
$PackageName = $pkgInfo.Name
35+
if (!$PackageName -or !$PackageVersion)
36+
{
37+
Write-Host "Package name or version is not available in the package information file. Skipping the release plan status update for the package."
38+
return
39+
}
40+
41+
# Check Azure DevOps Release Plan work items if LanguageShort is available
42+
Write-Host "Checking active release plan work items for package: $PackageName"
43+
$workItems = Get-ReleasePlanForPackage $PackageName
44+
if(!$workItems)
45+
{
46+
Write-Host "No active release plans found for package name: $PackageName."
47+
return
48+
}
49+
50+
$activeReleasePlan = $workItems
51+
if($workItems.Count -gt 1 -and ($workItems -is [System.Array]))
52+
{
53+
$concatenatedIds = ($workItems | Select-Object -ExpandProperty id) -join ','
54+
Write-Host "Multiple release plans found for package name: $PackageName with work item IDs: $concatenatedIds. Using the first release plan to update release status."
55+
$activeReleasePlan = $workItems[0]
56+
}
57+
# Update release status
58+
Write-Host "Release plan work item ID: $($activeReleasePlan["id"])"
59+
Write-Host "Marking release completion for package, name: $PackageName version: $PackageVersion"
60+
#Update-ReleaseStatusInReleasePlan $activeReleasePlan.id "Released" $PackageVersion
61+
Write-Host "Successfully marked release completion for package, name: $PackageName version: $PackageVersion."
4562
}
4663

47-
$activeReleasePlan = $workItems
48-
if($workItems.Count -gt 1 -and ($workItems -is [System.Array]))
49-
{
50-
$concatenatedIds = ($workItems | Select-Object -ExpandProperty id) -join ','
51-
Write-Host "Multiple release plans found for package name: $PackageName with work item IDs: $concatenatedIds. Using the first release plan to update release status."
52-
$activeReleasePlan = $workItems[0]
64+
$InfoFileName = Split-Path $PackageInfoFilePath -Leaf
65+
# Process the package if given path is package info file
66+
if ($InfoFileName -like "*.json")
67+
{
68+
Write-Host "Processing package info file: $PackageInfoFilePath"
69+
Process-Package $PackageInfoFilePath
5370
}
54-
# Update release status
55-
Write-Host "Release plan work item ID: $($activeReleasePlan["id"])"
56-
Write-Host "Marking release completion for package, name: $PackageName version: $PackageVersion"
57-
Update-ReleaseStatusInReleasePlan $activeReleasePlan.id "Released" $PackageVersion
58-
Write-Host "Successfully marked release completion for package, name: $PackageName version: $PackageVersion."
71+
else
72+
{
73+
Write-Host "Finding all package info files in directory: $PackageInfoFilePath"
74+
# Get all package info file under the directory given in input param and process
75+
Get-ChildItem -Path $PackageInfoFilePath -Filter "*.json" | ForEach-Object {
76+
Write-Host "Processing package info file: $_"
77+
Process-Package $_.FullName
78+
}
79+
}

0 commit comments

Comments
 (0)