【问题标题】:How to fix 401 when deploying Maven build to Azure Artifacts via Azure Pipeline?通过 Azure Pipeline 将 Maven 构建部署到 Azure Artifacts 时如何修复 401?
【发布时间】:2021-04-26 17:19:22
【问题描述】:

我在 Azure Artifacts (azure-maven) 中创建了提要,添加了 MavenAuthenticate 任务来构建管道(使用 artifactsFeeds:azure-mave),将 mavenAuthenticateFeed: true 添加到 Maven 任务,将存储库添加到 pom。 xml 具有相同的 ID,但是在部署 Maven 任务时失败并显示 401(未授权)。

有没有我遗漏的步骤?

(如果我没有 PAT,我也不想使用 PAT,这不是使用 MavenAuthenticate 任务的原因吗?)

干杯, 史蒂夫

【问题讨论】:

    标签: azure maven azure-pipelines artifacts


    【解决方案1】:

    嗯,看起来问题实际上是将 mavenAuthenticateFeed 设置为 true,这对我来说没有意义 :(

    这是工作 yml:

    trigger:
    - main
    
    variables:
      - name: MAVEN_CACHE_FOLDER
        value: $(Pipeline.Workspace)/.m2/repository
      - name: MAVEN_OPTS
        value: -Dmaven.repo.local=$(MAVEN_CACHE_FOLDER)
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    - task: MavenAuthenticate@0
      inputs:
        artifactsFeeds: 'azure-maven'
    
    - task: Cache@2
      inputs:
        key: 'maven | "$(Agent.OS)" | pom.xml'
        path: '$(MAVEN_CACHE_FOLDER)'
        cacheHitVar: 'CacheRestored'
        restoreKeys: |
          maven | "$(Agent.OS)"
          maven
      displayName: Cache Maven local repo
    
    - task: Maven@3
      inputs:
        mavenPomFile: 'pom.xml'
        goals: 'package deploy'
        publishJUnitResults: true
        testResultsFiles: '**/surefire-reports/TEST-*.xml'
        javaHomeOption: 'JDKVersion'
        mavenVersionOption: 'Default'
        mavenOptions: '-Xmx3072m $(MAVEN_OPTS)'
        mavenAuthenticateFeed: false
        jdkVersionOption: '1.8'
        jdkArchitectureOption: 'x64'
        effectivePomSkip: false
        sonarQubeRunAnalysis: false
    
    - task: CopyFiles@2
      inputs:
        Contents: '**/target/*.jar'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
        CleanTargetFolder: true
        flattenFolders: true
    
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'Test'
        publishLocation: 'Container'
    

    【讨论】:

    • 如果提供您自己的 settings.xml:
    • 让它也可以通过将 mavenAuthenticateFeed 设置为 false 来工作。两个都不懂
    【解决方案2】:

    如果提供您自己的 settings.xml:

      <servers>
        <server>
          <id>azure-maven</id>
          <username>AzureDevOps</username>
          <password>${env.SYSTEM_ACCESSTOKEN}</password>
        </server>
      </servers>
    

    您需要设置SYSTEM_ACCESSTOKEN:

    - task: DownloadSecureFile@1
      name: mvnSettings
      inputs:
        secureFile: 'settings.xml'
    - task: Maven@3
      env:
        SYSTEM_ACCESSTOKEN: $(System.AccessToken)
      inputs:
        mavenPomFile: 'pom.xml'
        goals: 'clean deploy'
        publishJUnitResults: true
        testResultsFiles: '**/surefire-reports/TEST-*.xml'
        javaHomeOption: 'JDKVersion'
        mavenVersionOption: 'Default'
        options: '-s $(mvnSettings.secureFilePath)'
        mavenOptions: '-Xmx3072m $(MAVEN_OPTS)'
        mavenAuthenticateFeed: false
        jdkVersionOption: '1.8'
        jdkArchitectureOption: 'x64'
        effectivePomSkip: false
        sonarQubeRunAnalysis: false
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 2020-01-29
      相关资源
      最近更新 更多