Sync eng/common directory with azure-sdk-tools for PR 12410 (#6772)
* Added 'ArtifactsJson' parameter * Made script work for non-java * Reduced duplicated parsing * Fixed type error --------- Co-authored-by: ray chen <raychen@microsoft.com>
This commit is contained in:
parent
44b5a65419
commit
e9cc8a7a37
@ -1,12 +1,25 @@
|
|||||||
parameters:
|
parameters:
|
||||||
PackageName: ''
|
- name: PackageName
|
||||||
PackageNames: ''
|
type: string
|
||||||
ServiceDirectory: ''
|
default: ''
|
||||||
TagSeparator: '_'
|
- name: PackageNames
|
||||||
TestPipeline: false
|
type: string
|
||||||
|
default: ''
|
||||||
|
- name: ServiceDirectory
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
- name: TagSeparator
|
||||||
|
type: string
|
||||||
|
default: '_'
|
||||||
|
- name: TestPipeline
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
- name: ArtifactsJson
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- ${{ if eq(parameters.TestPipeline, 'true') }}:
|
- ${{ if eq(parameters.TestPipeline, true) }}:
|
||||||
- task: PowerShell@2
|
- task: PowerShell@2
|
||||||
displayName: Prep template pipeline for release
|
displayName: Prep template pipeline for release
|
||||||
condition: and(succeeded(), ne(variables['Skip.SetTestPipelineVersion'], 'true'))
|
condition: and(succeeded(), ne(variables['Skip.SetTestPipelineVersion'], 'true'))
|
||||||
@ -18,4 +31,5 @@ steps:
|
|||||||
-PackageNames '${{ coalesce(parameters.PackageName, parameters.PackageNames) }}'
|
-PackageNames '${{ coalesce(parameters.PackageName, parameters.PackageNames) }}'
|
||||||
-ServiceDirectory '${{ parameters.ServiceDirectory }}'
|
-ServiceDirectory '${{ parameters.ServiceDirectory }}'
|
||||||
-TagSeparator '${{ parameters.TagSeparator }}'
|
-TagSeparator '${{ parameters.TagSeparator }}'
|
||||||
|
-ArtifactsJson '${{ parameters.ArtifactsJson }}'
|
||||||
pwsh: true
|
pwsh: true
|
||||||
|
|||||||
@ -3,12 +3,14 @@
|
|||||||
param (
|
param (
|
||||||
[Parameter(mandatory = $true)]
|
[Parameter(mandatory = $true)]
|
||||||
[string]$BuildID,
|
[string]$BuildID,
|
||||||
[Parameter(mandatory = $true)]
|
[Parameter(mandatory = $false)]
|
||||||
[string]$PackageNames,
|
[string]$PackageNames = "",
|
||||||
[Parameter(mandatory = $true)]
|
[Parameter(mandatory = $true)]
|
||||||
[string]$ServiceDirectory,
|
[string]$ServiceDirectory,
|
||||||
[Parameter(mandatory = $false)]
|
[Parameter(mandatory = $false)]
|
||||||
[string]$TagSeparator = "_"
|
[string]$TagSeparator = "_",
|
||||||
|
[Parameter(mandatory = $false)]
|
||||||
|
[string]$ArtifactsJson = ""
|
||||||
)
|
)
|
||||||
|
|
||||||
. (Join-Path $PSScriptRoot common.ps1)
|
. (Join-Path $PSScriptRoot common.ps1)
|
||||||
@ -16,43 +18,117 @@ param (
|
|||||||
Write-Host "PackageNames: $PackageNames"
|
Write-Host "PackageNames: $PackageNames"
|
||||||
Write-Host "ServiceDirectory: $ServiceDirectory"
|
Write-Host "ServiceDirectory: $ServiceDirectory"
|
||||||
Write-Host "BuildID: $BuildID"
|
Write-Host "BuildID: $BuildID"
|
||||||
|
Write-Host "ArtifactsJson: $ArtifactsJson"
|
||||||
|
|
||||||
$packageNamesArray = @()
|
$packageNamesArray = @()
|
||||||
|
$artifacts = $null
|
||||||
|
|
||||||
if ([String]::IsNullOrWhiteSpace($PackageNames)) {
|
# If ArtifactsJson is provided, extract package names from it
|
||||||
LogError "PackageNames cannot be empty."
|
if (![String]::IsNullOrWhiteSpace($ArtifactsJson)) {
|
||||||
exit 1
|
Write-Host "Using ArtifactsJson to determine package names"
|
||||||
|
try {
|
||||||
|
$artifacts = $ArtifactsJson | ConvertFrom-Json
|
||||||
|
$packageNamesArray = $artifacts | ForEach-Object { $_.name }
|
||||||
|
Write-Host "Extracted package names from ArtifactsJson: $($packageNamesArray -join ', ')"
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
LogError "Failed to parse ArtifactsJson: $($_.Exception.Message)"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
elseif (![String]::IsNullOrWhiteSpace($PackageNames)) {
|
||||||
$packageNamesArray = $PackageNames.Split(',')
|
$packageNamesArray = $PackageNames.Split(',')
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
LogError "Either PackageNames or ArtifactsJson must be provided."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($packageName in $packageNamesArray) {
|
if ($artifacts) {
|
||||||
Write-Host "Processing $packageName"
|
# When using ArtifactsJson, process each artifact with its name and groupId (if applicable)
|
||||||
$newVersion = [AzureEngSemanticVersion]::new("1.0.0")
|
try {
|
||||||
$prefix = "$packageName$TagSeparator"
|
foreach ($artifact in $artifacts) {
|
||||||
Write-Host "Get Latest Tag : git tag -l $prefix*"
|
$packageName = $artifact.name
|
||||||
$latestTags = git tag -l "$prefix*"
|
$newVersion = [AzureEngSemanticVersion]::new("1.0.0")
|
||||||
|
$prefix = "$packageName$TagSeparator"
|
||||||
|
|
||||||
$semVars = @()
|
if ($Language -eq "java") {
|
||||||
|
$groupId = $artifact.groupId
|
||||||
|
Write-Host "Processing $packageName with groupId $groupId"
|
||||||
|
if ([String]::IsNullOrWhiteSpace($groupId)) {
|
||||||
|
LogError "GroupId is missing for package $packageName."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
# Use groupId+artifactName format for tag prefix (e.g., "com.azure.v2+azure-sdk-template_")
|
||||||
|
$prefix = "$groupId+$packageName$TagSeparator"
|
||||||
|
}
|
||||||
|
|
||||||
if ($latestTags -and ($latestTags.Length -gt 0)) {
|
Write-Host "Get Latest Tag : git tag -l $prefix*"
|
||||||
foreach ($tag in $latestTags) {
|
$latestTags = git tag -l "$prefix*"
|
||||||
$semVars += $tag.Substring($prefix.Length)
|
|
||||||
|
$semVars = @()
|
||||||
|
|
||||||
|
if ($latestTags -and ($latestTags.Length -gt 0)) {
|
||||||
|
foreach ($tag in $latestTags) {
|
||||||
|
$semVars += $tag.Substring($prefix.Length)
|
||||||
|
}
|
||||||
|
|
||||||
|
$semVarsSorted = [AzureEngSemanticVersion]::SortVersionStrings($semVars)
|
||||||
|
Write-Host "Last Published Version $($semVarsSorted[0])"
|
||||||
|
$newVersion = [AzureEngSemanticVersion]::new($semVarsSorted[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
$newVersion.PrereleaseLabel = $newVersion.DefaultPrereleaseLabel
|
||||||
|
$newVersion.PrereleaseNumber = $BuildID
|
||||||
|
$newVersion.IsPrerelease = $True
|
||||||
|
|
||||||
|
Write-Host "Version to publish [ $($newVersion.ToString()) ]"
|
||||||
|
|
||||||
|
if ($Language -ne "java") {
|
||||||
|
SetPackageVersion -PackageName $packageName `
|
||||||
|
-Version $newVersion.ToString() `
|
||||||
|
-ServiceDirectory $ServiceDirectory
|
||||||
|
} else {
|
||||||
|
SetPackageVersion -PackageName $packageName `
|
||||||
|
-Version $newVersion.ToString() `
|
||||||
|
-ServiceDirectory $ServiceDirectory `
|
||||||
|
-GroupId $groupId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
LogError "Failed to process ArtifactsJson: $ArtifactsJson, exception: $($_.Exception.Message)"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# Fallback to original logic when using PackageNames string
|
||||||
|
foreach ($packageName in $packageNamesArray) {
|
||||||
|
Write-Host "Processing $packageName"
|
||||||
|
$newVersion = [AzureEngSemanticVersion]::new("1.0.0")
|
||||||
|
$prefix = "$packageName$TagSeparator"
|
||||||
|
Write-Host "Get Latest Tag : git tag -l $prefix*"
|
||||||
|
$latestTags = git tag -l "$prefix*"
|
||||||
|
|
||||||
|
$semVars = @()
|
||||||
|
|
||||||
|
if ($latestTags -and ($latestTags.Length -gt 0)) {
|
||||||
|
foreach ($tag in $latestTags) {
|
||||||
|
$semVars += $tag.Substring($prefix.Length)
|
||||||
|
}
|
||||||
|
|
||||||
|
$semVarsSorted = [AzureEngSemanticVersion]::SortVersionStrings($semVars)
|
||||||
|
Write-Host "Last Published Version $($semVarsSorted[0])"
|
||||||
|
$newVersion = [AzureEngSemanticVersion]::new($semVarsSorted[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
$semVarsSorted = [AzureEngSemanticVersion]::SortVersionStrings($semVars)
|
$newVersion.PrereleaseLabel = $newVersion.DefaultPrereleaseLabel
|
||||||
Write-Host "Last Published Version $($semVarsSorted[0])"
|
$newVersion.PrereleaseNumber = $BuildID
|
||||||
$newVersion = [AzureEngSemanticVersion]::new($semVarsSorted[0])
|
$newVersion.IsPrerelease = $True
|
||||||
|
|
||||||
|
Write-Host "Version to publish [ $($newVersion.ToString()) ]"
|
||||||
|
|
||||||
|
SetPackageVersion -PackageName $packageName `
|
||||||
|
-Version $newVersion.ToString() `
|
||||||
|
-ServiceDirectory $ServiceDirectory
|
||||||
}
|
}
|
||||||
|
|
||||||
$newVersion.PrereleaseLabel = $newVersion.DefaultPrereleaseLabel
|
|
||||||
$newVersion.PrereleaseNumber = $BuildID
|
|
||||||
$newVersion.IsPrerelease = $True
|
|
||||||
|
|
||||||
Write-Host "Version to publish [ $($newVersion.ToString()) ]"
|
|
||||||
|
|
||||||
SetPackageVersion -PackageName $packageName `
|
|
||||||
-Version $newVersion.ToString() `
|
|
||||||
-ServiceDirectory $ServiceDirectory
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user