Used full pkg name for dev ops work item

This commit is contained in:
ray chen 2025-11-26 00:34:34 +00:00 committed by azure-sdk
parent 6b28105085
commit 621e2a905c
7 changed files with 68 additions and 22 deletions

View File

@ -14,6 +14,9 @@ parameters:
- name: Condition - name: Condition
type: string type: string
default: succeeded() default: succeeded()
- name: GroupId
type: string
default: ''
steps: steps:
- task: Powershell@2 - task: Powershell@2
@ -23,6 +26,7 @@ steps:
-PackageName '${{ parameters.PackageName }}' -PackageName '${{ parameters.PackageName }}'
-ServiceDirectory '${{ coalesce(parameters.ServiceDirectory, parameters.ServiceName) }}' -ServiceDirectory '${{ coalesce(parameters.ServiceDirectory, parameters.ServiceName) }}'
-ForRelease $${{ parameters.ForRelease }} -ForRelease $${{ parameters.ForRelease }}
-GroupId '${{ parameters.GroupId }}'
pwsh: true pwsh: true
workingDirectory: $(Pipeline.Workspace) workingDirectory: $(Pipeline.Workspace)
displayName: Verify ChangeLogEntry for ${{ parameters.PackageName }} displayName: Verify ChangeLogEntry for ${{ parameters.PackageName }}

View File

@ -269,15 +269,20 @@ function Split-ArrayIntoBatches {
# Get the full package name based on packageInfo properties # Get the full package name based on packageInfo properties
# Returns Group+ArtifactName if Group exists and has a value, otherwise returns Name # Returns Group+ArtifactName if Group exists and has a value, otherwise returns Name
# If UseColonSeparator switch is enabled, returns Group:ArtifactName format (colon separator)
function Get-FullPackageName { function Get-FullPackageName {
param ( param (
[Parameter(Mandatory=$true)] [Parameter(Mandatory=$true)]
[PSCustomObject]$PackageInfo [PSCustomObject]$PackageInfo,
[switch]$UseColonSeparator
) )
if ($PackageInfo.PSObject.Members.Name -contains "Group") { if ($PackageInfo.PSObject.Members.Name -contains "Group") {
$groupId = $PackageInfo.Group $groupId = $PackageInfo.Group
if ($groupId) { if ($groupId) {
if ($UseColonSeparator) {
return "${groupId}:$($PackageInfo.ArtifactName)"
}
return "${groupId}+$($PackageInfo.ArtifactName)" return "${groupId}+$($PackageInfo.ArtifactName)"
} }
} }

View File

@ -230,16 +230,29 @@ class PackageProps {
# Returns important properties of the package relative to the language repo # Returns important properties of the package relative to the language repo
# Returns a PS Object with properties @ { pkgName, pkgVersion, pkgDirectoryPath, pkgReadMePath, pkgChangeLogPath } # Returns a PS Object with properties @ { pkgName, pkgVersion, pkgDirectoryPath, pkgReadMePath, pkgChangeLogPath }
# Note: python is required for parsing python package properties. # Note: python is required for parsing python package properties.
# GroupId is optional and is used to filter packages for languages that support group identifiers (e.g., Java).
# When GroupId is provided, the function will match both the package name and the group ID.
function Get-PkgProperties { function Get-PkgProperties {
Param Param
( (
[Parameter(Mandatory = $true)] [Parameter(Mandatory = $true)]
[string]$PackageName, [string]$PackageName,
[string]$ServiceDirectory [string]$ServiceDirectory,
[string]$GroupId
) )
$allPkgProps = Get-AllPkgProperties -ServiceDirectory $ServiceDirectory $allPkgProps = Get-AllPkgProperties -ServiceDirectory $ServiceDirectory
$pkgProps = $allPkgProps.Where({ $_.Name -eq $PackageName -or $_.ArtifactName -eq $PackageName });
if ([string]::IsNullOrEmpty($GroupId)) {
$pkgProps = $allPkgProps.Where({ $_.Name -eq $PackageName -or $_.ArtifactName -eq $PackageName });
}
else {
$pkgProps = $allPkgProps.Where({
($_.Name -eq $PackageName -or $_.ArtifactName -eq $PackageName) -and
$_.PSObject.Properties.Name -contains "Group" -and
$_.Group -eq $GroupId
});
}
if ($pkgProps.Count -ge 1) { if ($pkgProps.Count -ge 1) {
if ($pkgProps.Count -gt 1) { if ($pkgProps.Count -gt 1) {

View File

@ -30,6 +30,9 @@ If one isn't provided, then it will compute the next ship date or today's date i
.PARAMETER ReleaseTrackingOnly .PARAMETER ReleaseTrackingOnly
Optional: If this switch is passed then the script will only update the release work items and not update the versions in the local repo or validate the changelog. Optional: If this switch is passed then the script will only update the release work items and not update the versions in the local repo or validate the changelog.
.PARAMETER GroupId
Optional: The group ID for the package. For Java packages, if not provided, the script will prompt for input with 'com.azure' as the default.
.EXAMPLE .EXAMPLE
PS> ./eng/common/scripts/Prepare-Release.ps1 <PackageName> PS> ./eng/common/scripts/Prepare-Release.ps1 <PackageName>
@ -49,7 +52,8 @@ param(
[string]$PackageName, [string]$PackageName,
[string]$ServiceDirectory, [string]$ServiceDirectory,
[string]$ReleaseDate, # Pass Date in the form MM/dd/yyyy" [string]$ReleaseDate, # Pass Date in the form MM/dd/yyyy"
[switch]$ReleaseTrackingOnly = $false [switch]$ReleaseTrackingOnly = $false,
[string]$GroupId
) )
Set-StrictMode -Version 3 Set-StrictMode -Version 3
@ -57,6 +61,18 @@ Set-StrictMode -Version 3
. ${PSScriptRoot}\Helpers\ApiView-Helpers.ps1 . ${PSScriptRoot}\Helpers\ApiView-Helpers.ps1
. ${PSScriptRoot}\Helpers\DevOps-WorkItem-Helpers.ps1 . ${PSScriptRoot}\Helpers\DevOps-WorkItem-Helpers.ps1
# Prompt for GroupId if language is Java and GroupId is not provided
if ($Language -eq 'java' -and [string]::IsNullOrEmpty($GroupId)) {
$userInput = Read-Host "Input the group id, or press Enter to use 'com.azure' as the group id"
if ([string]::IsNullOrWhiteSpace($userInput)) {
$GroupId = "com.azure"
}
else {
$GroupId = $userInput.Trim()
}
Write-Host "Using GroupId: $GroupId" -ForegroundColor Green
}
function Get-ReleaseDay($baseDate) function Get-ReleaseDay($baseDate)
{ {
# Find first friday # Find first friday
@ -74,7 +90,7 @@ function Get-ReleaseDay($baseDate)
$ErrorPreference = 'Stop' $ErrorPreference = 'Stop'
$packageProperties = $null $packageProperties = $null
$packageProperties = Get-PkgProperties -PackageName $PackageName -ServiceDirectory $ServiceDirectory $packageProperties = Get-PkgProperties -PackageName $PackageName -ServiceDirectory $ServiceDirectory -GroupId $GroupId
if (!$packageProperties) if (!$packageProperties)
{ {
@ -128,7 +144,7 @@ if (Test-Path "Function:GetExistingPackageVersions")
} }
$currentProjectVersion = $packageProperties.Version $currentProjectVersion = $packageProperties.Version
$newVersion = Read-Host -Prompt "Input the new version, or press Enter to use use current project version '$currentProjectVersion'" $newVersion = Read-Host -Prompt "Input the new version, or press Enter to use current project version '$currentProjectVersion'"
if (!$newVersion) if (!$newVersion)
{ {
@ -142,8 +158,10 @@ if ($null -eq $newVersionParsed)
exit 1 exit 1
} }
$fullPackageName = Get-FullPackageName -PackageInfo $packageProperties
$result = Update-DevOpsReleaseWorkItem -language $LanguageDisplayName ` $result = Update-DevOpsReleaseWorkItem -language $LanguageDisplayName `
-packageName $packageProperties.Name ` -packageName $fullPackageName `
-version $newVersion ` -version $newVersion `
-plannedDate $releaseDateString ` -plannedDate $releaseDateString `
-packageRepoPath $packageProperties.serviceDirectory ` -packageRepoPath $packageProperties.serviceDirectory `
@ -166,7 +184,8 @@ try
} }
$url = az keyvault secret show --name "APIURL" --vault-name "AzureSDKPrepRelease-KV" --query "value" --output "tsv" $url = az keyvault secret show --name "APIURL" --vault-name "AzureSDKPrepRelease-KV" --query "value" --output "tsv"
$apiKey = az keyvault secret show --name "APIKEY" --vault-name "AzureSDKPrepRelease-KV" --query "value" --output "tsv" $apiKey = az keyvault secret show --name "APIKEY" --vault-name "AzureSDKPrepRelease-KV" --query "value" --output "tsv"
Check-ApiReviewStatus -PackageName $packageProperties.Name -packageVersion $newVersion -Language $LanguageDisplayName -url $url -apiKey $apiKey $fullPackageNameInApiView = Get-FullPackageName -PackageInfo $packageProperties -UseColonSeparator
Check-ApiReviewStatus -PackageName $fullPackageNameInApiView -packageVersion $newVersion -Language $LanguageDisplayName -url $url -apiKey $apiKey
} }
catch catch
{ {
@ -194,7 +213,7 @@ if (Test-Path "Function:SetPackageVersion")
} }
SetPackageVersion -PackageName $packageProperties.Name -Version $newVersion ` SetPackageVersion -PackageName $packageProperties.Name -Version $newVersion `
-ServiceDirectory $packageProperties.ServiceDirectory -ReleaseDate $releaseDateString ` -ServiceDirectory $packageProperties.ServiceDirectory -ReleaseDate $releaseDateString `
-PackageProperties $packageProperties -ReplaceLatestEntryTitle $replaceLatestEntryTitle -PackageProperties $packageProperties -ReplaceLatestEntryTitle $replaceLatestEntryTitle -GroupId $packageProperties.Group
} }
else else
{ {

View File

@ -4,6 +4,7 @@
# Version : Version to add or replace in change log # Version : Version to add or replace in change log
# Unreleased: Default is true. If it is set to false, then today's date will be set in verion title. If it is True then title will show "Unreleased" # Unreleased: Default is true. If it is set to false, then today's date will be set in verion title. If it is True then title will show "Unreleased"
# ReplaceLatestEntryTitle: Replaces the latest changelog entry title. # ReplaceLatestEntryTitle: Replaces the latest changelog entry title.
# GroupId: Optional. The group ID for the package. Used for filtering packages in languages that support group identifiers (e.g., Java).
[CmdletBinding()] [CmdletBinding()]
param ( param (
@ -14,7 +15,8 @@ param (
[Boolean]$Unreleased = $true, [Boolean]$Unreleased = $true,
[Boolean]$ReplaceLatestEntryTitle = $false, [Boolean]$ReplaceLatestEntryTitle = $false,
[String]$ChangelogPath, [String]$ChangelogPath,
[String]$ReleaseDate [String]$ReleaseDate,
[String]$GroupId
) )
Set-StrictMode -Version 3 Set-StrictMode -Version 3
@ -59,7 +61,7 @@ if ($null -eq [AzureEngSemanticVersion]::ParseVersionString($Version))
if ([string]::IsNullOrEmpty($ChangelogPath)) if ([string]::IsNullOrEmpty($ChangelogPath))
{ {
$pkgProperties = Get-PkgProperties -PackageName $PackageName -ServiceDirectory $ServiceDirectory $pkgProperties = Get-PkgProperties -PackageName $PackageName -ServiceDirectory $ServiceDirectory -GroupId $GroupId
$ChangelogPath = $pkgProperties.ChangeLogPath $ChangelogPath = $pkgProperties.ChangeLogPath
} }

View File

@ -201,15 +201,9 @@ function ProcessPackage($packageInfo)
# If there's a groupId that means this is Java and pkgName = GroupId+ArtifactName # If there's a groupId that means this is Java and pkgName = GroupId+ArtifactName
# but the VerifyAPIReview requires GroupId:ArtifactName # but the VerifyAPIReview requires GroupId:ArtifactName
# Can API view handle groupId+artifactName format so that we can use consistent format? # Technically we can use groupId+artifactName format in api view,
Write-Host "Package name before checking groupId: $fullPackageName" # however it will need to migrate the existing data and Java parser also needs the change.
if ($packageInfo.PSObject.Members.Name -contains "Group") { $fullPackageName = Get-FullPackageName -PackageInfo $packageInfo -UseColonSeparator
$groupId = $packageInfo.Group
if ($groupId){
$fullPackageName = "${groupId}:$($packageInfo.ArtifactName)"
}
}
Write-Host "Checking API review status for package $fullPackageName" Write-Host "Checking API review status for package $fullPackageName"
$apireviewDetails = VerifyAPIReview $fullPackageName $packageInfo.Version $Language $apireviewDetails = VerifyAPIReview $fullPackageName $packageInfo.Version $Language

View File

@ -1,11 +1,20 @@
# Wrapper Script for ChangeLog Verification # Wrapper Script for ChangeLog Verification
# Parameter description
# ChangeLogLocation: Path to the changelog file
# VersionString: Version string to verify in the changelog
# PackageName: Name of the package
# ServiceDirectory: Service directory path
# ForRelease: Whether to verify for release (default: false)
# GroupId: Optional. The group ID for the package. Used for filtering packages in languages that support group identifiers (e.g., Java).
[CmdletBinding()] [CmdletBinding()]
param ( param (
[String]$ChangeLogLocation, [String]$ChangeLogLocation,
[String]$VersionString, [String]$VersionString,
[string]$PackageName, [string]$PackageName,
[string]$ServiceDirectory, [string]$ServiceDirectory,
[boolean]$ForRelease = $False [boolean]$ForRelease = $False,
[String]$GroupId
) )
Set-StrictMode -Version 3 Set-StrictMode -Version 3
@ -18,7 +27,7 @@ if ($ChangeLogLocation -and $VersionString)
} }
else else
{ {
$PackageProp = Get-PkgProperties -PackageName $PackageName -ServiceDirectory $ServiceDirectory $PackageProp = Get-PkgProperties -PackageName $PackageName -ServiceDirectory $ServiceDirectory -GroupId $GroupId
$validChangeLog = Confirm-ChangeLogEntry -ChangeLogLocation $PackageProp.ChangeLogPath -VersionString $PackageProp.Version -ForRelease $ForRelease $validChangeLog = Confirm-ChangeLogEntry -ChangeLogLocation $PackageProp.ChangeLogPath -VersionString $PackageProp.Version -ForRelease $ForRelease
} }