Skip to content

Commit 9d19c08

Browse files
azure-sdkraych1
andauthored
Sync eng/common directory with azure-sdk-tools for PR 12410 (Azure#3144)
Sync eng/common directory with azure-sdk-tools for PR Azure/azure-sdk-tools#12410 See [eng/common workflow](https://github.com/Azure/azure-sdk-tools/blob/main/eng/common/README.md#workflow) --------- Co-authored-by: ray chen <[email protected]>
1 parent a8640f3 commit 9d19c08

File tree

2 files changed

+124
-34
lines changed

2 files changed

+124
-34
lines changed
Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
11
parameters:
2-
PackageName: ''
3-
PackageNames: ''
4-
ServiceDirectory: ''
5-
TagSeparator: '_'
6-
TestPipeline: false
2+
- name: PackageName
3+
type: string
4+
default: ''
5+
- name: PackageNames
6+
type: string
7+
default: ''
8+
- name: ServiceDirectory
9+
type: string
10+
default: ''
11+
- name: TagSeparator
12+
type: string
13+
default: '_'
14+
- name: TestPipeline
15+
type: boolean
16+
default: false
17+
- name: ArtifactsJson
18+
type: string
19+
default: ''
720

821
steps:
9-
- ${{ if eq(parameters.TestPipeline, 'true') }}:
22+
- ${{ if eq(parameters.TestPipeline, true) }}:
1023
- task: PowerShell@2
1124
displayName: Prep template pipeline for release
1225
condition: and(succeeded(), ne(variables['Skip.SetTestPipelineVersion'], 'true'))
@@ -18,4 +31,5 @@ steps:
1831
-PackageNames '${{ coalesce(parameters.PackageName, parameters.PackageNames) }}'
1932
-ServiceDirectory '${{ parameters.ServiceDirectory }}'
2033
-TagSeparator '${{ parameters.TagSeparator }}'
34+
-ArtifactsJson '${{ parameters.ArtifactsJson }}'
2135
pwsh: true

eng/common/scripts/SetTestPipelineVersion.ps1

Lines changed: 104 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,56 +3,132 @@
33
param (
44
[Parameter(mandatory = $true)]
55
[string]$BuildID,
6-
[Parameter(mandatory = $true)]
7-
[string]$PackageNames,
6+
[Parameter(mandatory = $false)]
7+
[string]$PackageNames = "",
88
[Parameter(mandatory = $true)]
99
[string]$ServiceDirectory,
1010
[Parameter(mandatory = $false)]
11-
[string]$TagSeparator = "_"
11+
[string]$TagSeparator = "_",
12+
[Parameter(mandatory = $false)]
13+
[string]$ArtifactsJson = ""
1214
)
1315

1416
. (Join-Path $PSScriptRoot common.ps1)
1517

1618
Write-Host "PackageNames: $PackageNames"
1719
Write-Host "ServiceDirectory: $ServiceDirectory"
1820
Write-Host "BuildID: $BuildID"
21+
Write-Host "ArtifactsJson: $ArtifactsJson"
1922

2023
$packageNamesArray = @()
24+
$artifacts = $null
2125

22-
if ([String]::IsNullOrWhiteSpace($PackageNames)) {
23-
LogError "PackageNames cannot be empty."
24-
exit 1
26+
# If ArtifactsJson is provided, extract package names from it
27+
if (![String]::IsNullOrWhiteSpace($ArtifactsJson)) {
28+
Write-Host "Using ArtifactsJson to determine package names"
29+
try {
30+
$artifacts = $ArtifactsJson | ConvertFrom-Json
31+
$packageNamesArray = $artifacts | ForEach-Object { $_.name }
32+
Write-Host "Extracted package names from ArtifactsJson: $($packageNamesArray -join ', ')"
33+
}
34+
catch {
35+
LogError "Failed to parse ArtifactsJson: $($_.Exception.Message)"
36+
exit 1
37+
}
2538
}
26-
else {
39+
elseif (![String]::IsNullOrWhiteSpace($PackageNames)) {
2740
$packageNamesArray = $PackageNames.Split(',')
2841
}
42+
else {
43+
LogError "Either PackageNames or ArtifactsJson must be provided."
44+
exit 1
45+
}
2946

30-
foreach ($packageName in $packageNamesArray) {
31-
Write-Host "Processing $packageName"
32-
$newVersion = [AzureEngSemanticVersion]::new("1.0.0")
33-
$prefix = "$packageName$TagSeparator"
34-
Write-Host "Get Latest Tag : git tag -l $prefix*"
35-
$latestTags = git tag -l "$prefix*"
47+
if ($artifacts) {
48+
# When using ArtifactsJson, process each artifact with its name and groupId (if applicable)
49+
try {
50+
foreach ($artifact in $artifacts) {
51+
$packageName = $artifact.name
52+
$newVersion = [AzureEngSemanticVersion]::new("1.0.0")
53+
$prefix = "$packageName$TagSeparator"
3654

37-
$semVars = @()
55+
if ($Language -eq "java") {
56+
$groupId = $artifact.groupId
57+
Write-Host "Processing $packageName with groupId $groupId"
58+
if ([String]::IsNullOrWhiteSpace($groupId)) {
59+
LogError "GroupId is missing for package $packageName."
60+
exit 1
61+
}
62+
# Use groupId+artifactName format for tag prefix (e.g., "com.azure.v2+azure-sdk-template_")
63+
$prefix = "$groupId+$packageName$TagSeparator"
64+
}
3865

39-
if ($latestTags -and ($latestTags.Length -gt 0)) {
40-
foreach ($tag in $latestTags) {
41-
$semVars += $tag.Substring($prefix.Length)
42-
}
66+
Write-Host "Get Latest Tag : git tag -l $prefix*"
67+
$latestTags = git tag -l "$prefix*"
68+
69+
$semVars = @()
4370

44-
$semVarsSorted = [AzureEngSemanticVersion]::SortVersionStrings($semVars)
45-
Write-Host "Last Published Version $($semVarsSorted[0])"
46-
$newVersion = [AzureEngSemanticVersion]::new($semVarsSorted[0])
71+
if ($latestTags -and ($latestTags.Length -gt 0)) {
72+
foreach ($tag in $latestTags) {
73+
$semVars += $tag.Substring($prefix.Length)
74+
}
75+
76+
$semVarsSorted = [AzureEngSemanticVersion]::SortVersionStrings($semVars)
77+
Write-Host "Last Published Version $($semVarsSorted[0])"
78+
$newVersion = [AzureEngSemanticVersion]::new($semVarsSorted[0])
79+
}
80+
81+
$newVersion.PrereleaseLabel = $newVersion.DefaultPrereleaseLabel
82+
$newVersion.PrereleaseNumber = $BuildID
83+
$newVersion.IsPrerelease = $True
84+
85+
Write-Host "Version to publish [ $($newVersion.ToString()) ]"
86+
87+
if ($Language -ne "java") {
88+
SetPackageVersion -PackageName $packageName `
89+
-Version $newVersion.ToString() `
90+
-ServiceDirectory $ServiceDirectory
91+
} else {
92+
SetPackageVersion -PackageName $packageName `
93+
-Version $newVersion.ToString() `
94+
-ServiceDirectory $ServiceDirectory `
95+
-GroupId $groupId
96+
}
97+
}
98+
}
99+
catch {
100+
LogError "Failed to process ArtifactsJson: $ArtifactsJson, exception: $($_.Exception.Message)"
101+
exit 1
47102
}
103+
} else {
104+
# Fallback to original logic when using PackageNames string
105+
foreach ($packageName in $packageNamesArray) {
106+
Write-Host "Processing $packageName"
107+
$newVersion = [AzureEngSemanticVersion]::new("1.0.0")
108+
$prefix = "$packageName$TagSeparator"
109+
Write-Host "Get Latest Tag : git tag -l $prefix*"
110+
$latestTags = git tag -l "$prefix*"
48111

49-
$newVersion.PrereleaseLabel = $newVersion.DefaultPrereleaseLabel
50-
$newVersion.PrereleaseNumber = $BuildID
51-
$newVersion.IsPrerelease = $True
112+
$semVars = @()
52113

53-
Write-Host "Version to publish [ $($newVersion.ToString()) ]"
114+
if ($latestTags -and ($latestTags.Length -gt 0)) {
115+
foreach ($tag in $latestTags) {
116+
$semVars += $tag.Substring($prefix.Length)
117+
}
54118

55-
SetPackageVersion -PackageName $packageName `
56-
-Version $newVersion.ToString() `
57-
-ServiceDirectory $ServiceDirectory
119+
$semVarsSorted = [AzureEngSemanticVersion]::SortVersionStrings($semVars)
120+
Write-Host "Last Published Version $($semVarsSorted[0])"
121+
$newVersion = [AzureEngSemanticVersion]::new($semVarsSorted[0])
122+
}
123+
124+
$newVersion.PrereleaseLabel = $newVersion.DefaultPrereleaseLabel
125+
$newVersion.PrereleaseNumber = $BuildID
126+
$newVersion.IsPrerelease = $True
127+
128+
Write-Host "Version to publish [ $($newVersion.ToString()) ]"
129+
130+
SetPackageVersion -PackageName $packageName `
131+
-Version $newVersion.ToString() `
132+
-ServiceDirectory $ServiceDirectory
133+
}
58134
}

0 commit comments

Comments
 (0)