Azure Pipelines for Gradle 项目失败,发布构建工件失败并出现错误:未找到 PathtoPublish

时间:2021-02-13 12:55:15

标签: spring-boot azure-devops azure-pipelines azure-pipelines-build-task azure-pipelines-yaml

我正在尝试从 Gradle 构建发布生成的 jar。我遇到的问题是 PublishBuildArtifacts 失败:

##[error]Publishing build artifacts failed with an error: Not found PathtoPublish: /home/vsts/work/1/s/build/libs/sleuth-kafka-streams-0.0.1-SNAPSHOT.jar'

这里是整个管道定义:

- main

pool:
  vmImage: ubuntu-latest
jobs:
  - job: build
    steps:
    - script: echo Hello, world!
      displayName: 'Run a one-line script'

    - script: |
        echo Add other tasks to build, test, and deploy your project.
        echo See https://aka.ms/yaml
      displayName: 'Run a multi-line script'
    - script: pwd
    - script: find ./
    - task: Gradle@2
      inputs:
        gradleWrapperFile: 'gradlew'
        tasks: 'clean build -x test'
        workingDirectory: ''
        publishJUnitResults: false
        testResultsFiles: '**/TEST-*.xml'
        javaHomeOption: 'JDKVersion'
        sonarQubeRunAnalysis: false
        sqGradlePluginVersionChoice: 'specify'
        sonarQubeGradlePluginVersion: '2.6.1'
    - script: find ../
    - script: find ../../
    - script: pwd
    - script: echo $(Build.ArtifactStagingDirectory)
    - script: echo $(System.DefaultWorkingDirectory) 
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: $(System.DefaultWorkingDirectory)/build/libs/sleuth-kafka-streams-0.0.1-SNAPSHOT.jar'
        ArtifactName: 'drop'
        publishLocation: 'Container'

jar 文件实际上就在那里,我可以在不同的 find 脚本的输出中看到,例如:

find ../../
========================== Starting Command Output ===========================
/bin/bash --noprofile --norc /home/vsts/work/_temp/3ff8a757-49a9-4769-b65f-72282d823867.sh
...
../../1/s/build/libs/sleuth-kafka-streams-0.0.1-SNAPSHOT.jar

我还尝试使用 $(Build.ArtifactStagingDirectory) 作为路径的开头,PathtoPublish: $(Build.ArtifactStagingDirectory)/build/libs/sleuth-kafka-streams-0.0.1-SNAPSHOT.jar'

在这种情况下,错误是:

##[warning]Directory '/home/vsts/work/1/a' is empty. Nothing will be added to build artifact 'drop'

你能看出这里有什么问题吗?

1 个答案:

答案 0 :(得分:0)

出于某种原因,我不得不添加一个 CopyFiles 任务才能使其工作:

        - task: CopyFiles@2
          inputs:
            contents: '**/*.jar'
            targetFolder: '$(Build.ArtifactStagingDirectory)'
        - task: PublishBuildArtifacts@1
          inputs:
            ArtifactName: 'drop'
            publishLocation: 'Container'