从 GitLab 读取 dotCover 总覆盖率输出 CI

Read dotCover total coverage output from GitLab CI

我将 dotCover 配置为来自我们的 GitLab CI 服务器的 运行。 它正确地 运行 测试,产生所需的输出,并且 CI 配置为将覆盖率 HTML 输出存储在 GitLab 工件中。这完美无缺。

我想做的是从 dotCover.exe 控制台 运行ner 读取总覆盖率输出并在 gitlab CI 中解析它。我阅读了 dotCover documentation 但我没有找到一种方法来将包含覆盖范围的行输出到控制台。 Gitlab CI 只能从 ci 作业的 sdout 中读取覆盖率值,将其与自定义正则表达式匹配。

这是我的 config.xml:

<?xml version="1.0" encoding="utf-8"?>
<AnalyseParams>
    <TargetExecutable>C:\NUnit\nunit3-console.exe</TargetExecutable>
    <TargetArguments>--agents=1 MyDll.Spec.dll MyDll2.Spec.dll</TargetArguments>
    <Output>cover/AppCoverageReport.html</Output>
    <ReportType>html</ReportType>
    <Scope>
        <ScopeEntry>MyApp\bin\x86\Release\net461\MyApp.*.dll</ScopeEntry>
        <ScopeEntry>MyApp\bin\x86\Release\net461\*.exe</ScopeEntry>
    </Scope>
    <Filters>
        <ExcludeFilters>
            <FilterEntry>
                <ModuleMask>*.Spec</ModuleMask>
            </FilterEntry>
        </ExcludeFilters>
    </Filters>
</AnalyseParams>

我 运行 它与 .gitlab-ci.yml:

C:\dotCover\dotCover.exe analyse config.xml /TargetWorkingDir=.

有没有办法在 GitLab 中查看这个值 CI?我是否遗漏了一些明显的东西?

谢谢

我最终阅读了 dotCover 的 HTML 输出文件并解析了输出。 幸运的是,总覆盖率位于输出文件的易于解析的部分。覆盖正则表达式是

'/= \[\["Total",\d+\.?\d+/'

这是我的最终 .gitlab-ci.yml 文件(对于 Windows 跑步者,dotCover 仅 windows):

my_job:
  # your job configuration
  # ...
  scripts:
    # build the solution here, ...
    - dotCover.exe analyse dotCover.xml /TargetWorkingDir=.
    - type cover\AppCoverageReport.html
  coverage: '/= \[\["Total",\d+\.?\d+/'

这不是一个非常长期的解决方案,但它目前有效,至少在我更新 dotCover 之前是这样。