我正在 Azure DevOps 中处理 Maven 任务,我需要引用 settings.xml 文件。我之前将 settings.xml 添加为库中的变量,但由于我锁定了该变量,它已成为一个秘密,我无法再访问它。
如何将 settings.xml 作为变量添加回另一个管道的库,并在下面的 Maven 任务中使用它?
- task: Maven@4
displayName: maven package
inputs:
mavenPomFile: 'pom.xml'
goals: 'clean install spring-boot:repackage'
options: '-Dmaven.test.skip=true -U'
publishJUnitResults: false
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.17'
mavenVersionOption: 'Default'
mavenAuthenticateFeed: true
effectivePomSkip: true
sonarQubeRunAnalysis: $(isStage)
sqMavenPluginVersionChoice: 'latest'
settingsXml: $(MAVEN_SETTINGS_XML)
由于该变量是Azure Pipeline中的秘密变量,因此无法直接在管道中显示。
如果您在Library -> Variable Groups中定义变量,则可以直接在另一个Pipeline中使用该变量组。请参阅此文档:将变量组链接到管道
例如:
variables:
- group: vargroup
steps:
- task: Maven@4
displayName: maven package
inputs:
mavenPomFile: 'pom.xml'
goals: 'clean install spring-boot:repackage'
options: '-Dmaven.test.skip=true -U'
publishJUnitResults: false
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.17'
mavenVersionOption: 'Default'
mavenAuthenticateFeed: true
effectivePomSkip: true
sonarQubeRunAnalysis: $(isStage)
sqMavenPluginVersionChoice: 'latest'
settingsXml: $(MAVEN_SETTINGS_XML)
另一方面,如果需要获取秘密变量的值,可以通过输出到文件来显示具体值。
这是一个示例:您可以添加 PowerShell 任务将值输出到 txt 文件,然后您可以使用 Publish Build Artifacts 任务在 Pipeline 中发布该文件。
variables:
- group: vargroup
steps:
- powershell: |
$env:MAPVALUE | Out-File $(System.DefaultWorkingDirectory)\settings.txt
env:
MAPVALUE: $(varname)
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)\settings.txt'
ArtifactName: 'settingsfile'
publishLocation: 'Container'
然后您可以在 Pipeline 工件中获取秘密变量值。
例如:
在这种情况下,您还可以手动将具有实际值的 Pipeline 变量添加到另一个 Pipeline 中。