如何将文件作为发布的一部分发布回 VSTS 发布管理?

How do you publish files back to VSTS Release Management as part of a release?

我正在尝试上传部署期间由第 3 方 exe 创建的日志文件,并将其包含在我的部署结果中,如果可能的话,在单独的选项卡上。

我尝试使用发布工件构建任务,但这只适用于构建而不适用于发布。

我尝试记录任务,但 ##vso[build.uploadlog]<local file path> 似乎也适用于构建,因为它抱怨找不到用于构建的容器。

版本管理没有构建工件的容器,这就是您看到此错误消息的原因。

您可以尝试以下任务:

Write-host "##vso[task.uploadfile]<filename>"

View and download attachments associated with releases

Would you like to upload additional logs or diagnostics or images when running tasks in a release? This feature enables users to upload additional files during deployments. To upload a new file, use the following agent command in your script:

Write-host "##vso[task.uploadfile]"

The file is then available as part of the release logs. When you download all the logs associated with the release, you will be able to retrieve this file as well.

您还可以在发布定义中添加一个 powershell 脚本任务来读取日志文件并将其输出到控制台。然后您将从 "Logs" 选项卡 powershell 脚本步骤中看到日志文件的内容。您也可以点击"Download all logs as zip"下载日志。

我希望能为那些寻求答案的人提供更清晰的信息。接受的答案确实有效。

我有很多文件(浏览器屏幕截图)要添加到发布日志中。这是我所做的:

如果您有很多文件,请将它们存档到一个 zip 文件中。

通过 powershell 将 zip 附加到日志文件。

下载日志

解压缩并享受!

@DonRolling,感谢您的详细回答。在我的例子中,我没有添加新任务来压缩文件夹,而是将该部分包含在 powershell 中:

Compress-Archive -Path "$(System.DefaultWorkingDirectory)/TestFolder/ScreenShots" -DestinationPath "$(System.DefaultWorkingDirectory)/TestFolder/ScreenShots" -Force

Write-host "##vso[task.uploadfile]$(System.DefaultWorkingDirectory)/TestFolder/ScreenShots.zip"

我遇到了类似的问题,但我也想在后续代理阶段使用 Artifacts

根据之前的答案,我创建了一个扩展,它提供了以下可能性:

  • 上传文件或文件夹到发布日志
  • 从之前上传的日志
  • 自动下载工件

上传任务正在使用前面提到的日志记录命令。下载任务然后查询 Azure DevOps REST Api 以下载到目前为止收集的所有日志,尝试找到指定的工件并将其复制到特定位置。

有兴趣的可以上Marketplace