Skip to content

Commit 2eee034

Browse files
authored
Enable ESRP batched release (#31502)
* Enable ESRP batched release * Remove StageOnly parameter from PartnerRelease * Correct artifact path usage in partner-release
1 parent 5ff16a2 commit 2eee034

9 files changed

+107
-109
lines changed

.editorconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,6 @@ continuation_indent_size = 4
2525

2626
[*.md]
2727
trim_trailing_whitespace = false
28+
29+
[*.yml]
30+
indent_size = 2

eng/pipelines/partner-release.yml

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@ parameters:
1010
displayName: 'Should publish'
1111
type: boolean
1212
default: true
13-
- name: StageOnly
14-
displayName: 'Stage Only'
15-
type: boolean
16-
default: false
1713

1814
resources:
1915
repositories:
@@ -25,7 +21,7 @@ resources:
2521
variables:
2622
BuildToolScripts: $(Pipeline.Workspace)/azure-sdk-build-tools/scripts
2723
Artifacts: $(Pipeline.Workspace)/artifacts
28-
SignedArtifact: $(Pipeline.Workspace)/packages-signed
24+
EsrpArtifacts: $(Pipeline.Workspace)/packages-esrp
2925

3026
jobs:
3127
- job: Signing
@@ -47,8 +43,10 @@ jobs:
4743
parameters:
4844
ArtifactDirectory: $(Artifacts)
4945

50-
- publish: $(Artifacts)
51-
artifact: packages-signed
46+
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
47+
parameters:
48+
ArtifactName: packages-signed
49+
ArtifactPath: $(Artifacts)
5250
- job: Release
5351
dependsOn: Signing
5452
pool:
@@ -57,21 +55,27 @@ jobs:
5755
steps:
5856
- checkout: self
5957
path: azure-sdk-for-java
58+
6059
- checkout: azure-sdk-build-tools
6160
path: azure-sdk-build-tools
61+
6262
- download: current
6363
displayName: Download Signed Artifacts
6464
artifact: packages-signed
65+
6566
- template: tools/gpg/gpg.yml@azure-sdk-build-tools
67+
6668
- template: /eng/pipelines/templates/steps/java-publishing.yml
6769
parameters:
68-
ArtifactDirectory: $(SignedArtifact)
69-
Target: MavenCentral
70+
ArtifactDirectory: $(Pipeline.Workspace)/packages-signed
71+
OutputDirectory: $(EsrpArtifacts)
72+
Target: EsrpRelease
7073
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
7174
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
7275
ShouldPublish: ${{ parameters.ShouldPublish }}
73-
StageOnly: ${{ parameters.StageOnly }}
76+
StageOnly: false
77+
7478
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
7579
parameters:
76-
ArtifactName: packages-mavencentral-$(System.JobAttempt)
77-
ArtifactPath: $(SignedArtifact)
80+
ArtifactName: packages-esrp-$(System.JobAttempt)
81+
ArtifactPath: $(EsrpArtifacts)

eng/pipelines/templates/jobs/build-validate-pom.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ jobs:
8282
arguments: >
8383
-SourceDirectory $(System.DefaultWorkingDirectory)/build
8484
-TargetDirectory $(Build.ArtifactStagingDirectory)
85+
-Artifacts ('${{ replace(convertToJson(parameters.Artifacts), '''', '`''') }}' | ConvertFrom-Json)
8586
-InformationAction Continue
8687
8788
- publish: $(Build.ArtifactStagingDirectory)

eng/pipelines/templates/jobs/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ jobs:
186186
arguments: >
187187
-SourceDirectory $(System.DefaultWorkingDirectory)/build
188188
-TargetDirectory $(Build.ArtifactStagingDirectory)
189+
-Artifacts ('${{ replace(convertToJson(parameters.Artifacts), '''', '`''') }}' | ConvertFrom-Json | Where-Object -Not skipPublishPackage )
189190
-InformationAction Continue
190191
191192
- template: /eng/common/pipelines/templates/steps/create-apireview.yml

eng/pipelines/templates/stages/archetype-java-release-batch.yml

Lines changed: 37 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -201,51 +201,43 @@ stages:
201201
displayName: 'Download Artifacts'
202202
artifact: ${{parameters.ArtifactName}}-signed
203203
- template: tools/gpg/gpg.yml@azure-sdk-build-tools
204-
- ${{ each artifact in parameters.Artifacts }}:
205-
- ${{if ne(artifact.skipPublishPackage, 'true')}}:
206-
- ${{ if eq(parameters.UseEsrpRelease, 'true') }}:
207-
- template: /eng/pipelines/templates/steps/java-publishing.yml
208-
parameters:
209-
ArtifactID: ${{artifact.name}}
210-
GroupID: ${{artifact.groupId}}
211-
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
212-
OutputDirectory: $(Pipeline.Workspace)/EsrpPackages
213-
Target: EsrpRelease
214-
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
215-
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
216-
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
217-
parameters:
218-
ArtifactName: ${{parameters.ArtifactName}}-${{artifact.name}}-esrp-$(System.JobAttempt)
219-
ArtifactPath: $(Pipeline.Workspace)/EsrpPackages
220-
- ${{ else }}:
221-
- template: /eng/pipelines/templates/steps/java-publishing.yml
222-
parameters:
223-
ArtifactID: ${{artifact.name}}
224-
GroupID: ${{artifact.groupId}}
225-
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
226-
Target: MavenCentral
227-
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
228-
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
229-
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
230-
parameters:
231-
ArtifactName: ${{parameters.ArtifactName}}-${{artifact.name}}-mavencentral-$(System.JobAttempt)
232-
ArtifactPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
233-
# After publishing to Maven, publish to the azure-sdk-for-java feed. The reason for
234-
# this is that the azure-sdk-for-java feed will have the package available immediately
235-
# whereas Maven can take several hours for the package to become available.
236-
- template: /eng/pipelines/templates/steps/java-publishing.yml
237-
parameters:
238-
ArtifactID: ${{artifact.name}}
239-
GroupID: ${{artifact.groupId}}
240-
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
241-
RepositoryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-java/maven/v1
242-
Target: JavaDevFeed
243-
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
244-
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
245-
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
246-
parameters:
247-
ArtifactName: ${{parameters.ArtifactName}}-${{artifact.name}}-javadevfeed-$(System.JobAttempt)
248-
ArtifactPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
204+
- ${{ if eq(parameters.UseEsrpRelease, 'true') }}:
205+
- template: /eng/pipelines/templates/steps/java-publishing.yml
206+
parameters:
207+
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
208+
OutputDirectory: $(Pipeline.Workspace)/EsrpPackages
209+
Target: EsrpRelease
210+
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
211+
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
212+
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
213+
parameters:
214+
ArtifactName: ${{parameters.ArtifactName}}-esrp-$(System.JobAttempt)
215+
ArtifactPath: $(Pipeline.Workspace)/EsrpPackages
216+
- ${{ else }}:
217+
- template: /eng/pipelines/templates/steps/java-publishing.yml
218+
parameters:
219+
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
220+
Target: MavenCentral
221+
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
222+
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
223+
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
224+
parameters:
225+
ArtifactName: ${{parameters.ArtifactName}}-mavencentral-$(System.JobAttempt)
226+
ArtifactPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
227+
# After publishing to Maven, publish to the azure-sdk-for-java feed. The reason for
228+
# this is that the azure-sdk-for-java feed will have the package available immediately
229+
# whereas Maven can take several hours for the package to become available.
230+
- template: /eng/pipelines/templates/steps/java-publishing.yml
231+
parameters:
232+
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
233+
RepositoryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-java/maven/v1
234+
Target: JavaDevFeed
235+
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
236+
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
237+
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
238+
parameters:
239+
ArtifactName: ${{parameters.ArtifactName}}-javadevfeed-$(System.JobAttempt)
240+
ArtifactPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
249241

250242
- deployment: UpdatePackageVersion
251243
displayName: "Update Package Version"

eng/pipelines/templates/stages/archetype-java-release-patch.yml

Lines changed: 37 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -126,51 +126,43 @@ stages:
126126
displayName: 'Download Artifacts'
127127
artifact: ${{parameters.ArtifactName}}-signed
128128
- template: tools/gpg/gpg.yml@azure-sdk-build-tools
129-
- ${{ each artifact in parameters.Artifacts }}:
130-
- ${{if ne(artifact.skipPublishPackage, 'true')}}:
131-
- ${{ if eq(parameters.UseEsrpRelease, 'true') }}:
132-
- template: /eng/pipelines/templates/steps/java-publishing.yml
133-
parameters:
134-
ArtifactID: ${{artifact.name}}
135-
GroupID: ${{artifact.groupId}}
136-
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
137-
OutputDirectory: $(Pipeline.Workspace)/EsrpPackages
138-
Target: EsrpRelease
139-
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
140-
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
141-
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
142-
parameters:
143-
ArtifactName: ${{parameters.ArtifactName}}-${{artifact.name}}-esrp-$(System.JobAttempt)
144-
ArtifactPath: $(Pipeline.Workspace)/EsrpPackages
145-
- ${{ else }}:
146-
- template: /eng/pipelines/templates/steps/java-publishing.yml
147-
parameters:
148-
ArtifactID: ${{artifact.name}}
149-
GroupID: ${{artifact.groupId}}
150-
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
151-
Target: MavenCentral
152-
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
153-
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
154-
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
155-
parameters:
156-
ArtifactName: ${{parameters.ArtifactName}}-${{artifact.name}}-mavencentral-$(System.JobAttempt)
157-
ArtifactPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
158-
# After publishing to Maven, publish to the azure-sdk-for-java feed. The reason for
159-
# this is that the azure-sdk-for-java feed will have the package available immediately
160-
# whereas Maven can take several hours for the package to become available.
161-
- template: /eng/pipelines/templates/steps/java-publishing.yml
162-
parameters:
163-
ArtifactID: ${{artifact.name}}
164-
GroupID: ${{artifact.groupId}}
165-
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
166-
RepositoryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-java/maven/v1
167-
Target: JavaDevFeed
168-
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
169-
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
170-
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
171-
parameters:
172-
ArtifactName: ${{parameters.ArtifactName}}-${{artifact.name}}-javadevfeed-$(System.JobAttempt)
173-
ArtifactPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
129+
- ${{ if eq(parameters.UseEsrpRelease, 'true') }}:
130+
- template: /eng/pipelines/templates/steps/java-publishing.yml
131+
parameters:
132+
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
133+
OutputDirectory: $(Pipeline.Workspace)/EsrpPackages
134+
Target: EsrpRelease
135+
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
136+
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
137+
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
138+
parameters:
139+
ArtifactName: ${{parameters.ArtifactName}}-esrp-$(System.JobAttempt)
140+
ArtifactPath: $(Pipeline.Workspace)/EsrpPackages
141+
- ${{ else }}:
142+
- template: /eng/pipelines/templates/steps/java-publishing.yml
143+
parameters:
144+
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
145+
Target: MavenCentral
146+
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
147+
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
148+
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
149+
parameters:
150+
ArtifactName: ${{parameters.ArtifactName}}-mavencentral-$(System.JobAttempt)
151+
ArtifactPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
152+
# After publishing to Maven, publish to the azure-sdk-for-java feed. The reason for
153+
# this is that the azure-sdk-for-java feed will have the package available immediately
154+
# whereas Maven can take several hours for the package to become available.
155+
- template: /eng/pipelines/templates/steps/java-publishing.yml
156+
parameters:
157+
ArtifactDirectory: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
158+
RepositoryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-java/maven/v1
159+
Target: JavaDevFeed
160+
BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
161+
JavaRepoRoot: $(Pipeline.Workspace)/azure-sdk-for-java
162+
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
163+
parameters:
164+
ArtifactName: ${{parameters.ArtifactName}}-javadevfeed-$(System.JobAttempt)
165+
ArtifactPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
174166

175167
- deployment: UpdatePackageVersion
176168
displayName: "Update Package Version"

eng/pipelines/templates/stages/archetype-sdk-client-patch.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ stages:
155155
arguments: >
156156
-SourceDirectory $(System.DefaultWorkingDirectory)/build
157157
-TargetDirectory $(Build.ArtifactStagingDirectory)
158+
-Artifacts ('${{ replace(convertToJson(parameters.Artifacts), '''', '`''') }}' | ConvertFrom-Json | Where-Object -Not skipPublishPackage)
158159
-InformationAction Continue
159160
160161
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml

eng/pipelines/templates/steps/java-publishing.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,16 +98,15 @@ steps:
9898
-GPGExecutablePath ${{ parameters.GPGExecutablePath }}
9999
-InformationAction Continue
100100
- ${{if and(eq(parameters.ShouldPublish, 'true'), ne(parameters.StageOnly, 'true'))}}:
101-
- task: EsrpRelease@1
101+
- task: EsrpRelease@2
102102
displayName: 'Publish to ESRP'
103103
inputs:
104104
ConnectedServiceName: 'ESRP Release Service'
105105
Intent: 'PackageDistribution'
106106
ContentType: 'Maven'
107-
PackageLocation: $(PackageLocation)
107+
PackageLocation: ${{ parameters.OutputDirectory }}
108108
Owners: $(Build.RequestedForEmail)
109109
Approvers: '[email protected]'
110110
ServiceEndpointUrl: 'https://api.esrp.microsoft.com'
111111
MainPublisher: 'ESRPRELPACMANTEST'
112112
DomainTenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47'
113-

eng/scripts/Stage-MavenPackageArtifacts.ps1

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
param(
22
[Parameter(Mandatory=$true)][string]$SourceDirectory,
3-
[Parameter(Mandatory=$true)][string]$TargetDirectory
3+
[Parameter(Mandatory=$true)][string]$TargetDirectory,
4+
[Parameter(Mandatory=$true)][array]$Artifacts
45
)
56

67
$ErrorActionPreference = "Stop"
@@ -14,14 +15,18 @@ Write-Host "Searching for packages in: $SourceDirectory"
1415
$packageDetails = Get-MavenPackageDetails -ArtifactDirectory $SourceDirectory
1516
Write-Host "Found $($packageDetails.Count) packages in: $SourceDirectory"
1617

17-
foreach ($packageDetail in $packageDetails) {
18+
$artifactsToStage = @($Artifacts | ForEach-Object { "$($_.groupId)/$($_.name)" })
19+
$packagesToStage = @($packageDetails | Where-Object { "$($_.GroupID)/$($_.ArtifactID)" -in $artifactsToStage })
1820

21+
Write-Host "$($packagesToStage.Count) packages should be staged"
22+
23+
foreach ($packageDetail in $packagesToStage) {
1924
$groupIdDirectory = New-Item -Type Directory -Path $TargetDirectory -Name $packageDetail.GroupID -Force
20-
$artifactIdDirectory = New-Item -Type DIrectory -Path $groupIdDirectory -Name $PackageDetail.ArtifactID -Force
25+
$artifactIdDirectory = New-Item -Type Directory -Path $groupIdDirectory -Name $PackageDetail.ArtifactID -Force
2126

2227
Write-Host "Copying package $($packageDetail.GroupID):$($packageDetail.ArtifactID):$($packageDetail.Version) to: $artifactIdDirectory"
2328

2429
foreach ($associatedArtifact in $packageDetail.AssociatedArtifacts) {
2530
Copy-Item -Path $associatedArtifact.File -Destination $artifactIdDirectory
2631
}
27-
}
32+
}

0 commit comments

Comments
 (0)