Skip to content

Commit a8e02c1

Browse files
authored
Combined settings for signing and release stages (#48761)
* Combined settings for signing and release stages * Updated path to the sparse checkout one * Use full qualified name for gpg plugin
1 parent 3c6d145 commit a8e02c1

File tree

5 files changed

+54
-20
lines changed

5 files changed

+54
-20
lines changed

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ stages:
6565
displayName: 'Download Signed Artifacts'
6666
artifact: packages-signed
6767

68+
# Setup Maven mirror settings and authenticate with Azure Artifacts
69+
- template: /eng/pipelines/templates/steps/maven-authenticate.yml
70+
parameters:
71+
SourceDirectory: $(Pipeline.Workspace)/azure-sdk-for-java
72+
6873
# gpg-sign and create the flattened directory for ESRP bulk publish
6974
# Note: The maven release requires the files to be local GPG signed
7075
# Dev feed publishes use the gpg-sign-and-deply to do it in one step
@@ -260,6 +265,9 @@ stages:
260265
- download: current
261266
displayName: 'Download Artifacts'
262267
artifact: packages-signed
268+
- template: /eng/pipelines/templates/steps/maven-authenticate.yml
269+
parameters:
270+
SourceDirectory: $(Pipeline.Workspace)/azure-sdk-for-java
263271
- template: tools/gpg/gpg.yml@azure-sdk-build-tools
264272

265273
- ${{ if ne(parameters.PublicFeedUrl, 'maven.org') }}:
@@ -364,6 +372,15 @@ stages:
364372

365373
- template: /eng/pipelines/templates/steps/mvn-linux-repository-settings.yml
366374

375+
# maven-authenticate.yml cannot be used here because it overwrites ~/.m2/settings.xml
376+
# with eng/settings.xml, which would discard the docs-specific repository config
377+
# (e.g. docs-public-packages feed) set up by mvn-linux-repository-settings.yml above.
378+
# Instead, we only run MavenAuthenticate to inject credentials into the existing settings.
379+
- task: MavenAuthenticate@0
380+
displayName: 'Maven Authenticate'
381+
inputs:
382+
artifactsFeeds: 'azure-sdk-for-java'
383+
367384
- template: /eng/pipelines/templates/steps/install-rex-validation-tool.yml
368385

369386
- template: /eng/common/pipelines/templates/steps/update-docsms-metadata.yml
@@ -453,6 +470,9 @@ stages:
453470
454471
displayName: Setup TargetFeed
455472
473+
- template: /eng/pipelines/templates/steps/maven-authenticate.yml
474+
parameters:
475+
SourceDirectory: $(Pipeline.Workspace)/azure-sdk-for-java
456476
- template: tools/gpg/gpg.yml@azure-sdk-build-tools
457477

458478
- ${{ each artifact in parameters.Artifacts }}:
@@ -485,6 +505,15 @@ stages:
485505
486506
- template: /eng/pipelines/templates/steps/mvn-linux-repository-settings.yml
487507

508+
# maven-authenticate.yml cannot be used here because it overwrites ~/.m2/settings.xml
509+
# with eng/settings.xml, which would discard the docs-specific repository config
510+
# (e.g. docs-public-packages feed) set up by mvn-linux-repository-settings.yml above.
511+
# Instead, we only run MavenAuthenticate to inject credentials into the existing settings.
512+
- task: MavenAuthenticate@0
513+
displayName: 'Maven Authenticate'
514+
inputs:
515+
artifactsFeeds: 'azure-sdk-for-java'
516+
488517
- template: /eng/pipelines/templates/steps/install-rex-validation-tool.yml
489518

490519
- template: /eng/common/pipelines/templates/steps/update-docsms-metadata.yml

eng/pipelines/templates/steps/maven-authenticate.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
parameters:
2+
SourceDirectory: $(Build.SourcesDirectory)
3+
14
steps:
25
# Copy mirror settings to default Maven location so all requests go through CFS
36
- pwsh: |
47
$m2Dir = if ($env:USERPROFILE) { "$env:USERPROFILE\.m2" } else { "$HOME/.m2" }
58
New-Item -ItemType Directory -Force -Path $m2Dir | Out-Null
6-
Copy-Item -Path "$(Build.SourcesDirectory)/eng/settings.xml" -Destination "$m2Dir/settings.xml"
9+
Copy-Item -Path "${{ parameters.SourceDirectory }}/eng/settings.xml" -Destination "$m2Dir/settings.xml"
710
displayName: 'Setup Maven mirror settings'
811
912
# Authenticate with Azure Artifacts feeds

eng/repo-docs/docms/daily.update.setting.xml

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
22
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
33
https://maven.apache.org/xsd/settings-1.0.0.xsd">
4+
<mirrors>
5+
<mirror>
6+
<id>azure-sdk-for-java</id>
7+
<name>Azure Artifacts Maven Mirror</name>
8+
<url>https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-java/maven/v1</url>
9+
<mirrorOf>external:*,!confluent,!repository.spring.milestone,!docs-public-packages</mirrorOf>
10+
</mirror>
11+
</mirrors>
412
<profiles>
513
<profile>
614
<id>azure-sdk-for-java</id>
715
<activation>
816
<activeByDefault>true</activeByDefault>
917
</activation>
1018
<repositories>
11-
<repository>
12-
<id>azure-sdk-for-java</id>
13-
<url>https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-java/maven/v1</url>
14-
<releases>
15-
<enabled>true</enabled>
16-
</releases>
17-
<snapshots>
18-
<enabled>true</enabled>
19-
</snapshots>
20-
</repository>
2119
<repository>
2220
<id>docs-public-packages</id>
2321
<url>https://docfx.pkgs.visualstudio.com/docfx/_packaging/docs-public-packages/maven/v1</url>

eng/scripts/Publish-MavenPackages.ps1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,8 @@ foreach ($packageDetail in $packageDetails) {
166166
Write-Information "URL Option is: $urlOption"
167167

168168
Write-Information "Signing and deploying package to $localRepositoryDirectoryUri"
169-
Write-Information "mvn $gpgSignAndDeployWithVer `"--batch-mode`" `"$pomOption`" `"$fileOption`" `"$javadocOption`" `"$sourcesOption`" `"$filesOption`" $classifiersOption `"$typesOption`" `"$urlOption`" `"$gpgexeOption`" `"-DrepositoryId=target-repo`" `"--settings=$PSScriptRoot\..\maven.publish.settings.xml`""
170-
mvn $gpgSignAndDeployWithVer "--batch-mode" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$filesOption" $classifiersOption "$typesOption" "$urlOption" "$gpgexeOption" "-DrepositoryId=target-repo" "--settings=$PSScriptRoot\..\maven.publish.settings.xml"
169+
Write-Information "mvn $gpgSignAndDeployWithVer `"--batch-mode`" `"$pomOption`" `"$fileOption`" `"$javadocOption`" `"$sourcesOption`" `"$filesOption`" $classifiersOption `"$typesOption`" `"$urlOption`" `"$gpgexeOption`" `"-DrepositoryId=target-repo`" `"--global-settings=$PSScriptRoot\..\maven.publish.settings.xml`""
170+
mvn $gpgSignAndDeployWithVer "--batch-mode" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$filesOption" $classifiersOption "$typesOption" "$urlOption" "$gpgexeOption" "-DrepositoryId=target-repo" "--global-settings=$PSScriptRoot\..\maven.publish.settings.xml"
171171
if ($LASTEXITCODE) { exit $LASTEXITCODE }
172172
}
173173

@@ -178,8 +178,8 @@ foreach ($packageDetail in $packageDetails) {
178178
}
179179

180180
Write-Information "GPG Signing and deploying package in one step to devops feed: $packageReposityUrl"
181-
Write-Information "mvn $gpgSignAndDeployWithVer `"--batch-mode`" `"$pomOption`" `"$fileOption`" `"$javadocOption`" `"$sourcesOption`" `"$filesOption`" $classifiersOption `"$typesOption`" `"-Durl=$packageReposityUrl`" `"$gpgexeOption`" `"-DrepositoryId=target-repo`" `"-Drepo.password=[redacted]`" `"--settings=$PSScriptRoot\..\maven.publish.settings.xml`""
182-
mvn $gpgSignAndDeployWithVer "--batch-mode" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$filesOption" $classifiersOption "$typesOption" "-Durl=$packageReposityUrl" "$gpgexeOption" "-DrepositoryId=target-repo" "-Drepo.password=$RepositoryPassword" "--settings=$PSScriptRoot\..\maven.publish.settings.xml"
181+
Write-Information "mvn $gpgSignAndDeployWithVer `"--batch-mode`" `"$pomOption`" `"$fileOption`" `"$javadocOption`" `"$sourcesOption`" `"$filesOption`" $classifiersOption `"$typesOption`" `"-Durl=$packageReposityUrl`" `"$gpgexeOption`" `"-DrepositoryId=target-repo`" `"-Drepo.password=[redacted]`" `"--global-settings=$PSScriptRoot\..\maven.publish.settings.xml`""
182+
mvn $gpgSignAndDeployWithVer "--batch-mode" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$filesOption" $classifiersOption "$typesOption" "-Durl=$packageReposityUrl" "$gpgexeOption" "-DrepositoryId=target-repo" "-Drepo.password=$RepositoryPassword" "--global-settings=$PSScriptRoot\..\maven.publish.settings.xml"
183183

184184
if ($LASTEXITCODE -eq 0) {
185185
Write-Information "Package $($packageDetail.FullyQualifiedName) deployed"

eng/scripts/SignAndHash-MavenPackages.ps1

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,24 +151,28 @@ foreach ($packageDetail in $packageDetails) {
151151
$urlOption = "-Durl=$destinationPathUri"
152152
Write-Host "URL Option is: $urlOption"
153153

154-
$settingsOption = "--settings=$(Join-Path $PSScriptRoot '..' 'maven.publish.settings.xml' -Resolve)"
154+
$settingsOption = "--global-settings=$(Join-Path $PSScriptRoot '..' 'maven.publish.settings.xml' -Resolve)"
155155
Write-Host "Settings Option is: $settingsOption"
156156

157+
# Use fully-qualified plugin coordinates to avoid prefix resolution against incomplete
158+
# mirror metadata. This matches the approach used in Publish-MavenPackages.ps1.
159+
$gpgSignAndDeployGoal = "org.apache.maven.plugins:maven-gpg-plugin:3.2.7:sign-and-deploy-file"
160+
157161
Write-Host ""
158162
Write-Host "Signing package"
159163

160164
if ($additionalArtifacts) {
161165
Write-Host @"
162-
mvn gpg:sign-and-deploy-file "--batch-mode" "-Daether.checksums.algorithms=SHA-256,MD5,SHA-1" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$filesOption" "$classifiersOption" "$typesOption" "$urlOption" "$gpgexeOption" "-DrepositoryId=target-repo" "$settingsOption"
166+
mvn $gpgSignAndDeployGoal "--batch-mode" "-Daether.checksums.algorithms=SHA-256,MD5,SHA-1" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$filesOption" "$classifiersOption" "$typesOption" "$urlOption" "$gpgexeOption" "-DrepositoryId=target-repo" "$settingsOption"
163167
"@
164-
mvn gpg:sign-and-deploy-file "--batch-mode" "-Daether.checksums.algorithms=SHA-256,MD5,SHA-1" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$filesOption" "$classifiersOption" "$typesOption" "$urlOption" "$gpgexeOption" "-DrepositoryId=target-repo" "$settingsOption"
168+
mvn $gpgSignAndDeployGoal "--batch-mode" "-Daether.checksums.algorithms=SHA-256,MD5,SHA-1" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$filesOption" "$classifiersOption" "$typesOption" "$urlOption" "$gpgexeOption" "-DrepositoryId=target-repo" "$settingsOption"
165169
} else {
166170
# Track 1 libraries do not require $filesOption, $classifiersOption and $typesOption variables which
167171
# will only be set if there's a changelog for one or more of the libraries being released
168172
Write-Host @"
169-
mvn gpg:sign-and-deploy-file "--batch-mode" "-Daether.checksums.algorithms=SHA-256,MD5,SHA-1" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$urlOption" "$gpgexeOption" "-DrepositoryId=target-repo" "$settingsOption"
173+
mvn $gpgSignAndDeployGoal "--batch-mode" "-Daether.checksums.algorithms=SHA-256,MD5,SHA-1" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$urlOption" "$gpgexeOption" "-DrepositoryId=target-repo" "$settingsOption"
170174
"@
171-
mvn gpg:sign-and-deploy-file "--batch-mode" "-Daether.checksums.algorithms=SHA-256,MD5,SHA-1" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$urlOption" "$gpgexeOption" "-DrepositoryId=target-repo" "$settingsOption"
175+
mvn $gpgSignAndDeployGoal "--batch-mode" "-Daether.checksums.algorithms=SHA-256,MD5,SHA-1" "$pomOption" "$fileOption" "$javadocOption" "$sourcesOption" "$urlOption" "$gpgexeOption" "-DrepositoryId=target-repo" "$settingsOption"
172176
}
173177

174178
if ($LASTEXITCODE) { exit $LASTEXITCODE }

0 commit comments

Comments
 (0)