Skip to content

Commit 9611aed

Browse files
authored
Sync eng/common directory with azure-sdk-tools for PR 11974 (#42861)
* Add a script to update pull request URL in release plan from SDK generation pipeline
1 parent 1a598ea commit 9611aed

File tree

2 files changed

+74
-0
lines changed

2 files changed

+74
-0
lines changed

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

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,4 +1073,41 @@ function Update-ReleaseStatusInReleasePlan($releasePlanWorkItemId, $status, $ver
10731073
Write-Host "Updating Release Plan [$releasePlanWorkItemId] with status [$status] for language [$LanguageShort]."
10741074
$workItem = UpdateWorkItem -id $releasePlanWorkItemId -fields $fields
10751075
Write-Host "Updated release status for [$LanguageShort] in Release Plan [$releasePlanWorkItemId]"
1076+
}
1077+
1078+
function Update-PullRequestInReleasePlan($releasePlanWorkItemId, $pullRequestUrl, $status, $languageName)
1079+
{
1080+
$devopsFieldLanguage = Get-LanguageDevOpsName -LanguageShort $languageName
1081+
if (!$devopsFieldLanguage)
1082+
{
1083+
Write-Host "Unsupported language to update release plan, language [$languageName]"
1084+
return $null
1085+
}
1086+
1087+
$fields = @()
1088+
$fields += "`"SDKPullRequestFor$($devopsFieldLanguage)=$pullRequestUrl`""
1089+
$fields += "`"SDKPullRequestStatusFor$($devopsFieldLanguage)=$status`""
1090+
1091+
Write-Host "Updating Release Plan [$releasePlanWorkItemId] with Pull Request URL for language [$languageName]."
1092+
$workItem = UpdateWorkItem -id $releasePlanWorkItemId -fields $fields
1093+
Write-Host "Updated Pull Request URL [$pullRequestUrl] for [$languageName] in Release Plan [$releasePlanWorkItemId]"
1094+
}
1095+
1096+
function Get-ReleasePlan-Link($releasePlanWorkItemId)
1097+
{
1098+
$fields = @()
1099+
$fields += "System.Id"
1100+
$fields += "System.Title"
1101+
$fields += "Custom.ReleasePlanLink"
1102+
$fields += "Custom.ReleasePlanSubmittedby"
1103+
1104+
$fieldList = ($fields | ForEach-Object { "[$_]"}) -join ", "
1105+
$query = "SELECT ${fieldList} FROM WorkItems WHERE [System.Id] = $releasePlanWorkItemId"
1106+
$workItem = Invoke-Query $fields $query
1107+
if (!$workItem)
1108+
{
1109+
Write-Host "Release plan with ID $releasePlanWorkItemId not found."
1110+
return $null
1111+
}
1112+
return $workItem["fields"]
10761113
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
param(
2+
[Parameter(Mandatory = $true)]
3+
$ReleasePlanWorkItemId,
4+
[Parameter(Mandatory = $true)]
5+
$PullRequestUrl,
6+
[Parameter(Mandatory = $true)]
7+
$Status,
8+
[Parameter(Mandatory = $true)]
9+
$LanguageName
10+
)
11+
12+
<#
13+
.SYNOPSIS
14+
Updates the pull request URL and status in the specified release plan work item for a given programming language.
15+
16+
.PARAMETER ReleasePlanWorkItemId
17+
The ID of the release plan work item to update.
18+
19+
.PARAMETER PullRequestUrl
20+
The URL of the pull request to set in the release plan.
21+
22+
.PARAMETER Status
23+
The status of the pull request.
24+
25+
.PARAMETER LanguageName
26+
The programming language associated with the pull request.
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+
35+
LogDebug "Updating pull request in release plan"
36+
Update-PullRequestInReleasePlan $ReleasePlanWorkItemId $PullRequestUrl $Status $LanguageName
37+
LogDebug "Updated pull request in release plan"

0 commit comments

Comments
 (0)