在Github自述文件

时间:2018-05-04 01:28:06

标签: azure-devops

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

1 个答案:

答案 0 :(得分:1)

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

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

Deatil步骤如下:

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

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

  2. 获取相关的构建日志

    您可以使用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"
        }
    

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

  3. 收集信息并格式化README

    您可以获取有关您需求的信息,并格式化README文件。

  4. 提交并推送更改到您的github存储库

    git checkout $(Build.SourceBranchName)
    git add .
    git commit -m 'update README'
    git push origin $(Build.SourceBranchName)
    
  5. 注意:

    • 由于您需要在CI构建期间推送README的更改,因此最好在CI构建定义中添加一个步骤,以检查是否由README更新触发构建。
    • 由于git命令通常显示非标准输出,因此您需要为PowerShell任务取消选择“标准错误时失败”选项。

      enter image description here