Skip to content

Commit 7f04e44

Browse files
azure-sdkpraveenkuttappanCopilot
authored
Sync eng/common directory with azure-sdk-tools for PR 11559 (#2915)
Sync eng/common directory with azure-sdk-tools for PR Azure/azure-sdk-tools#11559 See [eng/common workflow](https://github.com/Azure/azure-sdk-tools/blob/main/eng/common/README.md#workflow) --------- Co-authored-by: Praveen Kuttappan <[email protected]> Co-authored-by: Praven Kuttappan <[email protected]> Co-authored-by: Copilot <[email protected]>
1 parent 1163a7d commit 7f04e44

File tree

2 files changed

+114
-0
lines changed

2 files changed

+114
-0
lines changed

eng/common/scripts/Helpers/DevOps-WorkItem-Helpers.ps1

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,3 +1015,61 @@ function UpdateValidationStatus($pkgvalidationDetails, $BuildDefinition, $Pipeli
10151015
Write-Host "[$($workItem.id)]$LanguageDisplayName - $pkgName($versionMajorMinor) - Updated"
10161016
return $true
10171017
}
1018+
1019+
1020+
function Get-LanguageDevOpsName($LanguageShort)
1021+
{
1022+
switch ($LanguageShort.ToLower())
1023+
{
1024+
"net" { return "Dotnet" }
1025+
"js" { return "JavaScript" }
1026+
"java" { return "Java" }
1027+
"go" { return "Go" }
1028+
"python" { return "Python" }
1029+
default { return $null }
1030+
}
1031+
}
1032+
1033+
function Get-ReleasePlanForPackage($packageName)
1034+
{
1035+
$devopsFieldLanguage = Get-LanguageDevOpsName -LanguageShort $LanguageShort
1036+
if (!$devopsFieldLanguage)
1037+
{
1038+
Write-Host "Unsupported language to check release plans, language [$LanguageShort]"
1039+
return $null
1040+
}
1041+
1042+
$prStatusFieldName = "SDKPullRequestStatusFor$($devopsFieldLanguage)"
1043+
$packageNameFieldName = "$($devopsFieldLanguage) Package Name"
1044+
$fields = @()
1045+
$fields += "System.ID"
1046+
$fields += "System.State"
1047+
$fields += "System.AssignedTo"
1048+
$fields += "System.Parent"
1049+
$fields += "System.Tags"
1050+
1051+
$fieldList = ($fields | ForEach-Object { "[$_]"}) -join ", "
1052+
$query = "SELECT ${fieldList} FROM WorkItems WHERE [Work Item Type] = 'Release Plan' AND [${packageNameFieldName}] = '${packageName}'"
1053+
$query += " AND [${prStatusFieldName}] = 'merged'"
1054+
$query += " AND [System.State] IN ('In Progress') ORDER BY [System.CreatedDate]"
1055+
$workItems = Invoke-Query $fields $query
1056+
return $workItems
1057+
}
1058+
1059+
function Update-ReleaseStatusInReleasePlan($releasePlanWorkItemId, $status, $version)
1060+
{
1061+
$devopsFieldLanguage = Get-LanguageDevOpsName -LanguageShort $LanguageShort
1062+
if (!$devopsFieldLanguage)
1063+
{
1064+
Write-Host "Unsupported language to check release plans, language [$LanguageShort]"
1065+
return $null
1066+
}
1067+
1068+
$fields = @()
1069+
$fields += "`"ReleaseStatusFor$($devopsFieldLanguage)=$status`""
1070+
$fields += "`"ReleasedVersionFor$($devopsFieldLanguage)=$version`""
1071+
1072+
Write-Host "Updating Release Plan [$releasePlanWorkItemId] with status [$status] for language [$LanguageShort]."
1073+
$workItem = UpdateWorkItem -id $releasePlanWorkItemId -fields $fields
1074+
Write-Host "Updated release status for [$LanguageShort] in Release Plan [$releasePlanWorkItemId]"
1075+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
param(
2+
[Parameter(Mandatory = $true)]
3+
[string]$PackageName,
4+
5+
[Parameter(Mandatory = $true)]
6+
[string]$PackageVersion,
7+
8+
[Parameter(Mandatory = $false)]
9+
[int]$MaxCount = 5
10+
)
11+
12+
<#
13+
.SYNOPSIS
14+
Marks release plan completion by identifying pull requests that changed files in a given path.
15+
16+
.DESCRIPTION
17+
This script helps to mark release plan completion by finding the active release plans for a package name
18+
19+
.PARAMETER PackageName
20+
The package name being released (required)
21+
22+
.PARAMETER PackageVersion
23+
The package version being released (required)
24+
25+
.PARAMETER MaxCount
26+
Maximum number of recent pull request merges to check (default: 5)
27+
28+
#>
29+
30+
Set-StrictMode -Version 3
31+
. (Join-Path $PSScriptRoot common.ps1)
32+
. (Join-Path $PSScriptRoot Helpers DevOps-WorkItem-Helpers.ps1)
33+
34+
$AzureDevOpsOrganization = "azure-sdk"
35+
$AzureDevOpsProject = "Release"
36+
# Check Azure DevOps Release Plan work items if LanguageShort is available
37+
Write-Host "Checking active release plan work items for package: $PackageName"
38+
$workItems = Get-ReleasePlanForPackage $PackageName
39+
if(!$workItems)
40+
{
41+
Write-Host "No active release plans found for package name: $PackageName."
42+
exit 0
43+
}
44+
45+
$activeReleasePlan = $workItems
46+
if($workItems.Count -gt 1 -and ($workItems -is [System.Array]))
47+
{
48+
$concatenatedIds = ($workItems | Select-Object -ExpandProperty id) -join ','
49+
Write-Host "Multiple release plans found for package name: $PackageName with work item IDs: $concatenatedIds. Using the first release plan to update release status."
50+
$activeReleasePlan = $workItems[0]
51+
}
52+
# Update release status
53+
Write-Host "Release plan work item ID: $($activeReleasePlan["id"])"
54+
Write-Host "Marking release completion for package, name: $PackageName version: $PackageVersion"
55+
Update-ReleaseStatusInReleasePlan $activeReleasePlan.id "Released" $PackageVersion
56+
Write-Host "Successfully marked release completion for package, name: $PackageName version: $PackageVersion."

0 commit comments

Comments
 (0)