Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 39 additions & 28 deletions eng/common/scripts/Mark-ReleasePlanCompletion.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
}