发布构建工件失败并显示错误:未找到PathtoPublish:D:\ a \ 1 \ s \ $(buildStagingDirectory)

时间:2018-06-06 11:21:25

标签: continuous-integration azure-devops asp.net-core-webapi azure-pipelines azure-devops-rest-api

在VSTS中构建.Net核心API的CI管道。但是在构建时遇到以下错误。

Publishing build artifacts failed with an error: Not found PathtoPublish: D:\a\1\s\$(buildStagingDirectory)

这是我的构建定义看起来像

enter image description here

我已将PathToPublish提及为$(buildStagingDirectory)

如何摆脱这个错误?

5 个答案:

答案 0 :(得分:1)

我通常解决此问题的方法是,首先使用PublishPipelineArtifact@0任务,而不使用不推荐使用的PublishBuildArtifacts@1。因此,在YAML中,我将替换为:

function isPhoneValid(phone) {
  let onlyNumbers = phone.replace(/[^0-9]/g, "");
  if (onlyNumbers.length != 11) console.log(phone + ' is invalid');
  else console.log(phone + ' is valid');
}

isPhoneValid('1 (888) 555-1234');
isPhoneValid('(888) 555-1234');

针对:

- task: PublishBuildArtifacts@1
  displayName: 'PublishBuildArtifacts'
  inputs:
    pathtoPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: 'drop'

如果我继续出现此错误,则将管道变量- task: PublishPipelineArtifact@0 displayName: 'Publish pipeline artifact' inputs: artifactName: 'drop' targetPath: '$(Build.ArtifactStagingDirectory)' 设置为system.debug,再次触发管道,并观察产生我要发布的工件的任务的日志。路径应该在那些日志中的某处

答案 1 :(得分:0)

没有带有该名称的内置变量,您在寻找:

$(Build.ArtifactStagingDirectory)

请参阅:https://docs.microsoft.com/en-us/vsts/pipelines/build/variables?view=vsts&tabs=batch

答案 2 :(得分:0)

我刚刚输入完全相同的错误。

<强>原因

system.debug变量设置为true后,它显示发布任务实际执行输出文件夹的zip(默认情况下为$(build.artifactstagingdirectory))并将此级别设置为1级在目录结构中。然后它继续删除实际的文件夹本身!我不确定这是不是故意还是错误。

解决方法

在观察了上述内容之后,我只是将发布任务的输出写入$(build.artifactstagingdirectory)\artifact,然后生成的Publish Artifact任务很高兴拿起zip文件,因为它仍指向{{ 1}}

失败的默认发布任务输出

$(build.artifactstagingdirectory)

添加额外目录后修改输出

2018-06-07T02:24:17.8506434Z ##[debug]Zip Source: D:\a\1\a
2018-06-07T02:24:17.8508216Z ##[debug]Zip arguments: Source: D:\a\1\a , target: D:\a\1\a.zip
2018-06-07T02:24:18.0627499Z ##[debug]Successfully created archive D:\a\1\a.zip
2018-06-07T02:24:18.0628200Z ##[debug]rm -rf D:\a\1\a
2018-06-07T02:24:18.0629858Z ##[debug]removing directory
...
...
2018-06-07T02:24:18.3052522Z ##[error]Publishing build artifacts failed with an error: Not found PathtoPublish: D:\a\1\a

答案 3 :(得分:0)

正如已经指出的那样,您可能用$(build.StagingDirectory)来表示。但是我认为这是一个简单的错字,因为我遇到了同样的问题。

答案是,当发布BUILD变量时似乎不可用(尽管在工具提示中将其显示为示例)。您可能想要的是$(System.ArtifactsDirectory)。那对我有用。

答案 4 :(得分:0)

这对我有用

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: $(System.DefaultWorkingDirectory)/bin/Any CPU/Release/netcoreapp3.1
    ArtifactName: 'drop'
    publishLocation: 'Container'