问题描述
我们使用 jfrog Artifactory 云来存储 maven 依赖项。我们在 pom 文件中使用这些依赖项。我们能够从本地文件构建,因为我们在 .m2/settings.xml 文件中添加了 jfrog 凭据。 当我们尝试从 azure devops yaml 文件运行同样的事情时,我们收到身份验证错误(401 错误代码),并且由于该库没有下载并且构建失败。 我们在 azure devops 中添加了服务连接,它能够连接到 jfrog。 如何配置构建管道以访问 jfrog Artifactory 以访问库?
trigger:
- main
pool:
vmImage: "ubuntu-latest"
steps:
- checkout: self
lfs: true
- task: ArtifactoryToolsInstaller@1
inputs:
artifactoryService: 'xxxxxxxxxxxxxxxxxxxx'
cliInstallationRepo: 'jfrog-cli'
installExtractors: true
extractorsInstallationRepo: 'jcenter'
- task: ArtifactoryGenericDownload@3
inputs:
specsource: 'taskConfiguration'
fileSpec: |
{
"files": [
{
"pattern": "repo/*jar","target": $(System.DefaultWorkingDirectory)/lib
}
]
}
failNoOp: true
- task: Maven@3
inputs:
mavenPomFile: "pom.xml"
mavenoptions: "-Xmx3072m"
javaHomeOption: "JDKVersion"
jdkVersionoption: "1.8"
jdkArchitectureOption: "x64"
publishJUnitResults: true
testResultsFiles: "**/surefire-reports/TEST-*.xml"
goals: "package"
- publish: $(System.DefaultWorkingDirectory)/target/test.jar
artifact: artifact
解决方法
您似乎正在使用 Maven 任务,Artifactory Azure DevOps 扩展不支持该任务。此任务不使用已配置的 Artifactory 服务连接。
相反,我建议使用 ArtifactoryMaven 任务。使用此任务会强制解析和部署到 Artifactory,因此不需要 settings.xml 文件。此任务还会发布到相关的目标部署存储库。
基本用法示例:
- task: ArtifactoryMaven@1
inputs:
mavenPomFile: 'pom.xml'
goals: 'install'
artifactoryResolverService: 'xxxxxxxxxxxxxxxxxxxx'
targetResolveReleaseRepo: 'libs-release'
targetResolveSnapshotRepo: 'libs-snapshot'
artifactoryDeployService: 'xxxxxxxxxxxxxxxxxxxx'
targetDeployReleaseRepo: 'libs-release-local'
targetDeploySnapshotRepo: 'libs-snapshot-local'
您可以阅读有关 Artifactory Maven 任务 here 的更多信息。