【问题标题】:TFS write string message to build summaryTFS 写入字符串消息以构建摘要
【发布时间】:2020-01-05 10:59:52
【问题描述】:

我想将字符串消息写入 TFS 构建摘要。我有一个带有变量的 Powershell 任务

   $output = $(Build.SourcesDirectory)\scripts\SCRIPT_NAME.ps1

   $output

持有

   =====
   Numb. of files for patch in:
   Win32 = 2
   Win64 = 123
   ---
   Numb. of original files:
   Win32 = 0
   Win64 = 12
   =====

该方案是一条完整的消息,现在我只想将其显示在点下方的图片或任何其他部分中,只要它在“摘要”中即可 我查看了this Stack 问题,但它回答了如何显示文件的超链接。我想专门显示字符串而不是包含我要打印的文件的链接。另外我提到了Microsoft docs,但我还没有找到我要找的东西

【问题讨论】:

    标签: powershell tfs tfsbuild


    【解决方案1】:

    简单的方法是使用 Logging Commands 作为您的共享链接建议:

    ##vso[task.uploadsummary]local file path
    

    上传摘要标记并将其附加到当前时间线记录。这 摘要应添加到构建/发布摘要中且不可用 用于下载日志。

    不会在摘要中生成超链接,它会直接在构建摘要页面上列出共享文件中的文本/内容。您只需要将输出放在一个文件中,然后使用上面的命令 lin。

    例如:

    1. 添加 PowerShell 任务

    脚本:

    Write-Host "##vso[task.uploadsummary]c:\testsummary.md"
    


    此外,您还可以创建自己的扩展程序以在我的 Azure DevOps 构建摘要页面中显示图形内容。 (太复杂,不推荐)

    例如通过您的扩展在构建结果中添加自定义部分,通过这种方式,您可以在该自定义部分中添加html测试结果报告。 有关于构建结果扩展的示例:vsts-extension-samples

    更多关于如何构建扩展的信息,可以参考这篇文章

    Create your first extension for Visual Studio Team Services

    一个扩展供您参考Publish HTML Artifact


    更新

    在 Markdown 格式的 md 文件中,您可以使用 </br> 来换行。以哈希字符 # 开始一行以设置标题。例如

    =====</br>Processed files statistics </br>Numb. of files for patch in: Win32 = 2 [this is single line]</br> #Win64 = 123 [this is header] </br>[here split to lines rest of report]</br>===== 
    

    然后你可以检查右边部分的报告结果格式:

    【讨论】:

    • 如何格式化这个*.md 文件?对于我的问题报告,我收到Report.md\n =====\n Processed files statistics\n Numb. of files for patch in: Win32 = 2 [this is single line]\n * Win64 = 123* [this is header]\n [here split to lines rest of report]
    • @Uliysess Azure DevOps/TFS 也使用标记文件的正常格式。有关详细信息,您可以查看此Syntax guidance for basic Markdown usage 我还使用您的报告的示例格式更新了我的回复供您参考。请检查一下。此外,您还可以使用 html 报告。
    【解决方案2】:

    部分/临时解决方案

    由于这是目前最接近 100% 正确回答问题的解决方案,因此这是公认的答案。当这里有人实施并指出更好的解决方案时,问题将被更新


    目前我需要快速解决方案,我使用task.logissue type=warning 显示$output 的内容。由于仅使用Write-Host "##vso[task.logissue type=warning;]$output" 将在一行中显示$output 的内容,因此我将其拆分为新行并遍历数组

        $output = $output.Split("`n`r")
    
        foreach($line in $output){ 
                Write-Host "##vso[task.logissue type=warning;]$line" 
        }
    

    产生预期的输出

    编辑: 使用所描述的解决方案,我正在部分回答我的问题 - 我正在显示 Warning 但我只想显示信息。未标记为错误或警告

    【讨论】:

    • 使用 type=debug 代替 type=warning。像这样##vso[task.logissue type=warning;]
    猜你喜欢
    • 2019-09-16
    • 2019-09-18
    • 1970-01-01
    • 2021-09-25
    • 2011-07-25
    • 2012-03-04
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    相关资源
    最近更新 更多