首页 文章

在Github自述文件上显示VSTS代码覆盖率结果

提问于
浏览
1

我的代码托管在GitHub中,我在VSTS中使用VSTest运行CI构建,输出代码覆盖率结果 . 我可以在完成的构建页面中看到这些结果,但能够在我们的GitHub仓库中显示这些结果会很好,就像我们的构建状态徽章和nuget徽章一样 . 有没有人知道使用VSTS(即内置任务)执行此操作的标准方法,还是我自己需要在脚本中处理这些内容?

1 回答

  • 1

    要在README上显示VSTS构建结果(例如代码覆盖率结果),您需要使用自己的脚本来处理它 .

    主要思想是获取构建日志的相关信息,并在README中提交信息 .

    详细步骤如下:

    • 在CI构建定义的末尾添加PowerShell任务

    在powershell脚本中,您需要从构建日志中获取测试结果,格式化并在README中提交信息 . 最后将更改推送到您的github仓库 . PowerShell脚本中的函数需要按照以下步骤来实现 .

    • 获取相关的构建日志

    您可以使用Timeline REST API获取当前构建日志:

    GET https://account.visualstudio.com/project/_apis/build/builds/$(Build.BuildId)/timeline?api-version=4.1
    

    并且您可以按任务名称(例如 VSTest )搜索特定测试的日志:

    {
        "id": "407545ba-79a9-55a7-47dd-583380011305",
        "parentId": "df143ba0-1c7a-5b21-02e1-d41a394e29c9",
        "type": "Task",
        "name": "VsTest - testAssemblies",
        "startTime": "2018-05-01T08:20:45.3233333Z",
        "finishTime": "2018-05-01T08:21:55.3733333Z",
        "currentOperation": null,
        "percentComplete": null,
        "state": "completed",
        "result": "succeeded",
        "resultCode": null,
        "changeId": 14,
        "lastModified": "0001-01-01T00:00:00",
        "workerName": "WXV-XINDO-12R2",
        "order": 4,
        "details": null,
        "errorCount": 0,
        "warningCount": 0,
        "url": null,
        "log": {
            "id": 5,
            "type": "Container",
            "url": "https://marinaliu.visualstudio.com/f7855e29-6f8d-429d-8c9b-41fd4d7e70a4/_apis/build/builds/2897/logs/5"
        },
        "task": {
            "id": "ef087383-ee5e-42c7-9a53-ab56c98420f9",
            "name": "VSTest",
            "version": "1.0.86"
        }
    

    然后,您可以通过URL https://marinaliu.visualstudio.com/f7855e29-6f8d-429d-8c9b-41fd4d7e70a4/_apis/build/builds/2897/logs/5获取VSTest构建日志(如上例所示) .

    • 收集信息并格式化自述文件

    您可以获取满足需求的信息,并格式化README文件 .

    • 提交并推送更改到您的github仓库
    git checkout $(Build.SourceBranchName)
    git add .
    git commit -m 'update README'
    git push origin $(Build.SourceBranchName)
    

    Note:

    • 由于您需要在CI构建期间推送README的更改,因此最好在CI构建定义中添加一个步骤,以检查README更新是否触发了构建 .

    • 由于git命令通常显示非标准输出,因此您需要为PowerShell任务取消选择“标准错误时失败”选项 .

    enter image description here

相关问题