Azure DevOps 无法连接到 jfrog Artifactory

问题描述

我们使用 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 的更多信息。