在VSTS中构建.Net核心API的CI管道。但是在构建时遇到以下错误。
Publishing build artifacts failed with an error: Not found PathtoPublish: D:\a\1\s\$(buildStagingDirectory)
这是我的构建定义看起来像
我已将PathToPublish提及为$(buildStagingDirectory)
如何摆脱这个错误?
答案 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'