Я использую Docker для запуска модульных тестов, для генерации результатов покрытия кода Cobertura, а затем для создания HTML-отчетов по этому вопросу (с использованием ReportGenerator ).Затем я публикую ОБА файл результатов покрытия кода и отчеты HTML в VSTS DevOps.
Вот команды, которые мне нужно выполнить:
# Generates coverage.cobertura.xml for use in the next step.
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=codecoveragereports/
# Generates HTML reports from coverage.cobertura.xml file.
dotnet reportgenerator -reports:app/test/MyApplication.UnitTests/codecoveragereports/coverage.cobertura.xml -targetdir:codecoveragereports -reportTypes:htmlInline
А теперь в dockerfile:
WORKDIR ./app/test/MyApplication.UnitTests/
RUN dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=codecoveragereports/
ENTRYPOINT ["/bin/bash", "-c", "dotnet reportgenerator -reports:codecoveragereports/*.xml -targetdir:codecoveragereports -reportTypes:htmlInline"]
И для построения образа:
docker build -t myapplication.tests -f dockerfile --target tester .
И для его запуска:
docker run --rm -it -v $PWD/codecoveragereports:/app/test/MyApplication.UnitTests/codecoveragereports myapplication.tests:latest
Проблема:
Файл результатов, сгенерированный на dotnet test
, действительно генерируется (я могу проверить это с помощью RUN dir
), но, кажется, исчезает, когда я задаю том (используя -v
) для docker run
.
Разве невозможно создать том на файлах, которые генерируются на изображении во время docker build
?