【发布时间】:2019-05-03 19:51:25
【问题描述】:
我从我的 Octopus 服务器下载了两个工件,以便在我的 vNext 构建中公开(我们使用的是本地 TFS)。
代码是:
$Artifacts.GetEnumerator() |% {
curl $_.Value -OutFile "$TestResults\$($_.Key)" -Headers @{
"X-Octopus-ApiKey" = $ApiKey
}
Write-Host "##vso[task.addattachment type=NUnitTestResults;name=$($_.Key);]$TestResults\$($_.Key)"
Write-Host "##vso[task.uploadfile]$TestResults\$($_.Key)"
Write-Host "##vso[artifact.upload containerfolder=NUnitTestResults2;artifactname=$($_.Key);]$TestResults\$($_.Key)"
#Write-Host "##vso[build.uploadlog]$TestResults\$($_.Key)"
}
两个文件 - CSTests.xml 和 PSTests.xml 被下载并放置在一个文件夹中。然后我发出 VSTS 日志记录命令。
我能为他们找到的唯一文档是https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md,它给我们留下了很大的想象空间。
到目前为止我学到了什么:
build.uploadlog
将文件的内容嵌入到相应任务的日志中。例如:
正如我们所见,NUnit 测试结果被预先添加到步骤日志中。这是文档所说的:
我希望它对某人有意义,对我来说没有任何意义。下一个:
artifact.upload
这很简单 - 它将文件作为工件添加到构建中:
但每个工件都包含 ALL 文件。所以,我点击哪个探索按钮(CSTests.xml 或PSTests.xml)并不重要,我总是会得到这个:
听起来我应该将这两个工件放在不同的容器文件夹中,但是同时拥有容器文件夹和工件名称的目的是什么?我很困惑。
task.uploadfile
使用这个我在下载日志时将我的 NUnit 测试结果文件包含在日志存档中:
这里没有问题。
task.addattachment
这对我来说是个谜。它没有明显的效果。文档说:
不清楚它是什么类型的附件,我们在哪里可以找到它。
所以,我的问题是:
- 除了上述半成品的降价页面之外,是否有关于 VSTS 日志记录命令的严肃文档?
-
build.uploadlog- 它总是将文件的内容添加到步骤日志中还是附加也是一种选择? -
artifact.upload- 如何将文件发布为单独的工件?这是否意味着单独的容器文件夹?但是随后文件的名称很可能会在两个地方被提及——容器文件夹和工件名称。是这样吗? -
task.addattachment- 它有什么作用?
【问题讨论】:
-
颠簸。有人吗?
-
你找到什么了吗?
-
不。没有时间去追求它。
-
这是我找到的页面,但也好不到哪里去:docs.microsoft.com/en-us/azure/devops/pipelines/scripts/…
标签: tfs azure-devops azure-pipelines