Sync eng/common directory with azure-sdk-tools for PR 11559 (#6701)
* Add a new script to mark package as released from release pipeline
This commit is contained in:
parent
5f482ad149
commit
20f9331334
@ -1015,3 +1015,61 @@ function UpdateValidationStatus($pkgvalidationDetails, $BuildDefinition, $Pipeli
|
||||
Write-Host "[$($workItem.id)]$LanguageDisplayName - $pkgName($versionMajorMinor) - Updated"
|
||||
return $true
|
||||
}
|
||||
|
||||
|
||||
function Get-LanguageDevOpsName($LanguageShort)
|
||||
{
|
||||
switch ($LanguageShort.ToLower())
|
||||
{
|
||||
"net" { return "Dotnet" }
|
||||
"js" { return "JavaScript" }
|
||||
"java" { return "Java" }
|
||||
"go" { return "Go" }
|
||||
"python" { return "Python" }
|
||||
default { return $null }
|
||||
}
|
||||
}
|
||||
|
||||
function Get-ReleasePlanForPackage($packageName)
|
||||
{
|
||||
$devopsFieldLanguage = Get-LanguageDevOpsName -LanguageShort $LanguageShort
|
||||
if (!$devopsFieldLanguage)
|
||||
{
|
||||
Write-Host "Unsupported language to check release plans, language [$LanguageShort]"
|
||||
return $null
|
||||
}
|
||||
|
||||
$prStatusFieldName = "SDKPullRequestStatusFor$($devopsFieldLanguage)"
|
||||
$packageNameFieldName = "$($devopsFieldLanguage) Package Name"
|
||||
$fields = @()
|
||||
$fields += "System.ID"
|
||||
$fields += "System.State"
|
||||
$fields += "System.AssignedTo"
|
||||
$fields += "System.Parent"
|
||||
$fields += "System.Tags"
|
||||
|
||||
$fieldList = ($fields | ForEach-Object { "[$_]"}) -join ", "
|
||||
$query = "SELECT ${fieldList} FROM WorkItems WHERE [Work Item Type] = 'Release Plan' AND [${packageNameFieldName}] = '${packageName}'"
|
||||
$query += " AND [${prStatusFieldName}] = 'merged'"
|
||||
$query += " AND [System.State] IN ('In Progress') ORDER BY [System.CreatedDate]"
|
||||
$workItems = Invoke-Query $fields $query
|
||||
return $workItems
|
||||
}
|
||||
|
||||
function Update-ReleaseStatusInReleasePlan($releasePlanWorkItemId, $status, $version)
|
||||
{
|
||||
$devopsFieldLanguage = Get-LanguageDevOpsName -LanguageShort $LanguageShort
|
||||
if (!$devopsFieldLanguage)
|
||||
{
|
||||
Write-Host "Unsupported language to check release plans, language [$LanguageShort]"
|
||||
return $null
|
||||
}
|
||||
|
||||
$fields = @()
|
||||
$fields += "`"ReleaseStatusFor$($devopsFieldLanguage)=$status`""
|
||||
$fields += "`"ReleasedVersionFor$($devopsFieldLanguage)=$version`""
|
||||
|
||||
Write-Host "Updating Release Plan [$releasePlanWorkItemId] with status [$status] for language [$LanguageShort]."
|
||||
$workItem = UpdateWorkItem -id $releasePlanWorkItemId -fields $fields
|
||||
Write-Host "Updated release status for [$LanguageShort] in Release Plan [$releasePlanWorkItemId]"
|
||||
}
|
||||
56
eng/common/scripts/Mark-ReleasePlanCompletion.ps1
Normal file
56
eng/common/scripts/Mark-ReleasePlanCompletion.ps1
Normal file
@ -0,0 +1,56 @@
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$PackageName,
|
||||
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$PackageVersion,
|
||||
|
||||
[Parameter(Mandatory = $false)]
|
||||
[int]$MaxCount = 5
|
||||
)
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Marks release plan completion by identifying pull requests that changed files in a given path.
|
||||
|
||||
.DESCRIPTION
|
||||
This script helps to mark release plan completion by finding the active release plans for a package name
|
||||
|
||||
.PARAMETER PackageName
|
||||
The package name being released (required)
|
||||
|
||||
.PARAMETER PackageVersion
|
||||
The package version being released (required)
|
||||
|
||||
.PARAMETER MaxCount
|
||||
Maximum number of recent pull request merges to check (default: 5)
|
||||
|
||||
#>
|
||||
|
||||
Set-StrictMode -Version 3
|
||||
. (Join-Path $PSScriptRoot common.ps1)
|
||||
. (Join-Path $PSScriptRoot Helpers DevOps-WorkItem-Helpers.ps1)
|
||||
|
||||
$AzureDevOpsOrganization = "azure-sdk"
|
||||
$AzureDevOpsProject = "Release"
|
||||
# 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."
|
||||
exit 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."
|
||||
Loading…
Reference in New Issue
Block a user