Считать общий охват покрытия dotCover из GitLab CI

Я настроил dotCover запускаться с нашего сервера GitLab CI. Он корректно запускает тесты, выдает требуемые выходные данные, а CI настроен на сохранение выходных данных HTML покрытия в артефактах GitLab. Это работает без нареканий.

То, что я пытаюсь сделать, это прочитать общий вывод покрытия из консоли запуска dotCover.exe и проанализировать его в gitlab CI. Я прочитал документацию по dotCover, но не нашел способа вывести на консоль строку, содержащую покрытие. Gitlab CI может только читать значения покрытия из sdout задания ci, сопоставляя его с пользовательским регулярным выражением.

Это мое 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? Я что-то упускаю из виду?

Спасибо

1 ответ

Решение

В итоге я прочитал выходной файл HTML dotCover и анализ выходных данных. К счастью, общий охват находится в легко разбираемой части выходного файла. Регламент покрытия

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

Это мой финал .gitlab-ci.yml файл (для Windows Runner, 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,

Другие вопросы по тегам