Skip to content

Commit 0a0b873

Browse files
raych1azure-sdk
authored andcommitted
Updated artifactJson input to artifacts input
1 parent b4be9cf commit 0a0b873

File tree

2 files changed

+58
-39
lines changed

2 files changed

+58
-39
lines changed

eng/common/pipelines/templates/steps/set-test-pipeline-version.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ parameters:
1414
- name: TestPipeline
1515
type: boolean
1616
default: false
17-
- name: ArtifactsJson
18-
type: string
19-
default: ''
17+
- name: Artifacts
18+
type: object
19+
default: []
2020

2121
steps:
2222
- ${{ if eq(parameters.TestPipeline, true) }}:
@@ -31,5 +31,5 @@ steps:
3131
-PackageNames '${{ coalesce(parameters.PackageName, parameters.PackageNames) }}'
3232
-ServiceDirectory '${{ parameters.ServiceDirectory }}'
3333
-TagSeparator '${{ parameters.TagSeparator }}'
34-
-ArtifactsJson '${{ parameters.ArtifactsJson }}'
34+
-Artifacts @('${{ replace(convertToJson(parameters.Artifacts), '''', '`''') }}' | ConvertFrom-Json)
3535
pwsh: true

eng/common/scripts/SetTestPipelineVersion.ps1

Lines changed: 54 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,63 +5,77 @@ param (
55
[string]$BuildID,
66
[Parameter(mandatory = $false)]
77
[string]$PackageNames = "",
8-
[Parameter(mandatory = $true)]
8+
[Parameter(mandatory = $false)]
99
[string]$ServiceDirectory,
1010
[Parameter(mandatory = $false)]
1111
[string]$TagSeparator = "_",
1212
[Parameter(mandatory = $false)]
13-
[string]$ArtifactsJson = ""
13+
[object[]]$Artifacts = @()
1414
)
1515

1616
. (Join-Path $PSScriptRoot common.ps1)
1717

18+
# Ensure Artifacts is always an array
19+
$Artifacts = @($Artifacts)
20+
1821
Write-Host "PackageNames: $PackageNames"
1922
Write-Host "ServiceDirectory: $ServiceDirectory"
2023
Write-Host "BuildID: $BuildID"
21-
Write-Host "ArtifactsJson: $ArtifactsJson"
22-
23-
$packageNamesArray = @()
24-
$artifacts = $null
25-
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-
}
38-
}
39-
elseif (![String]::IsNullOrWhiteSpace($PackageNames)) {
40-
$packageNamesArray = $PackageNames.Split(',')
41-
}
42-
else {
43-
LogError "Either PackageNames or ArtifactsJson must be provided."
44-
exit 1
45-
}
24+
Write-Host "Artifacts count: $($Artifacts.Count)"
4625

47-
if ($artifacts) {
48-
# When using ArtifactsJson, process each artifact with its name and groupId (if applicable)
26+
if ($Artifacts -and $Artifacts.Count -gt 0) {
27+
# When using Artifacts, process each artifact with its name and groupId (if applicable)
4928
try {
50-
foreach ($artifact in $artifacts) {
29+
foreach ($artifact in $Artifacts) {
30+
# Validate required properties
31+
if (-not (Get-Member -InputObject $artifact -Name 'name' -MemberType Properties)) {
32+
LogError "Artifact is missing required 'name' property."
33+
exit 1
34+
}
35+
5136
$packageName = $artifact.name
37+
if ([String]::IsNullOrWhiteSpace($packageName)) {
38+
LogError "Artifact 'name' property is null or empty."
39+
exit 1
40+
}
41+
42+
# Check for ServiceDirectory property
43+
$artifactServiceDirectory = $ServiceDirectory
44+
if (Get-Member -InputObject $artifact -Name 'ServiceDirectory' -MemberType Properties) {
45+
if (![String]::IsNullOrWhiteSpace($artifact.ServiceDirectory)) {
46+
$artifactServiceDirectory = $artifact.ServiceDirectory
47+
}
48+
}
49+
50+
# Validate ServiceDirectory is available
51+
if ([String]::IsNullOrWhiteSpace($artifactServiceDirectory)) {
52+
LogError "ServiceDirectory is required but not provided for artifact '$packageName'. Provide it via script parameter or artifact property."
53+
exit 1
54+
}
55+
5256
$newVersion = [AzureEngSemanticVersion]::new("1.0.0")
5357
$prefix = "$packageName$TagSeparator"
5458

5559
if ($Language -eq "java") {
60+
# Check for groupId property
61+
if (-not (Get-Member -InputObject $artifact -Name 'groupId' -MemberType Properties)) {
62+
LogError "Artifact '$packageName' is missing required 'groupId' property for Java language."
63+
exit 1
64+
}
65+
5666
$groupId = $artifact.groupId
57-
Write-Host "Processing $packageName with groupId $groupId"
5867
if ([String]::IsNullOrWhiteSpace($groupId)) {
5968
LogError "GroupId is missing for package $packageName."
6069
exit 1
6170
}
71+
72+
Write-Host "Processing $packageName with groupId $groupId"
6273
# Use groupId+artifactName format for tag prefix (e.g., "com.azure.v2+azure-sdk-template_")
6374
$prefix = "$groupId+$packageName$TagSeparator"
6475
}
76+
else {
77+
Write-Host "Processing $packageName"
78+
}
6579

6680
Write-Host "Get Latest Tag : git tag -l $prefix*"
6781
$latestTags = git tag -l "$prefix*"
@@ -87,21 +101,23 @@ if ($artifacts) {
87101
if ($Language -ne "java") {
88102
SetPackageVersion -PackageName $packageName `
89103
-Version $newVersion.ToString() `
90-
-ServiceDirectory $ServiceDirectory
104+
-ServiceDirectory $artifactServiceDirectory
91105
} else {
92106
SetPackageVersion -PackageName $packageName `
93107
-Version $newVersion.ToString() `
94-
-ServiceDirectory $ServiceDirectory `
108+
-ServiceDirectory $artifactServiceDirectory `
95109
-GroupId $groupId
96110
}
97111
}
98112
}
99113
catch {
100-
LogError "Failed to process ArtifactsJson: $ArtifactsJson, exception: $($_.Exception.Message)"
114+
LogError "Failed to process Artifacts: exception: $($_.Exception.Message)"
101115
exit 1
102116
}
103-
} else {
117+
} elseif (![String]::IsNullOrWhiteSpace($PackageNames)) {
104118
# Fallback to original logic when using PackageNames string
119+
$packageNamesArray = @()
120+
$packageNamesArray = $PackageNames.Split(',')
105121
foreach ($packageName in $packageNamesArray) {
106122
Write-Host "Processing $packageName"
107123
$newVersion = [AzureEngSemanticVersion]::new("1.0.0")
@@ -131,4 +147,7 @@ if ($artifacts) {
131147
-Version $newVersion.ToString() `
132148
-ServiceDirectory $ServiceDirectory
133149
}
150+
} else {
151+
LogError "Either PackageNames or Artifacts must be provided."
152+
exit 1
134153
}

0 commit comments

Comments
 (0)