Юнит-тесты в докере, как лучше?
От: Sharov Россия  
Дата: 21.04.21 17:29
Оценка:
Здравствуйте.

Допустим имеется сл. Dockerfile :
  стандартный набор

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /

COPY NuGet.Config /root/.nuget/NuGet/NuGet.Config

WORKDIR /src

COPY ["src/prj/prj.csproj", "src/prj/"]
COPY ["src/test/test.csproj", "src/test/"]
RUN dotnet restore "src/prj/prj.csproj"
COPY . .
WORKDIR "/src/src/prj"

#где-то тут нужно копировать файлы для тестов и запускать эти тесты


RUN dotnet build "prj.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "prj.csproj" -c single_exe -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "prj.dll"]


Необходимо в докере скопировать файлы для тестов, как-то получить результат выполнения тестов (успех или нет).
1) как это сделать -- запуск тестов и получение результатов теста;
2) самое главное, как быть с тестовыми файлами, которые для образа не нежны и весят почти ~200Мб?

Для пункта 2) пока видятся две опции -- на этапе сборки в TC создать отдельный контейнер для тестов,
т.е. просто создать образ, прогнать тесты, если все успешно продолжаем дальше и создаем уже другой,
рабочий образ. Минус видится -- все это долго, да и не нужный образ создается. Второй вариант --
все делать в одном контейнере, по результатам теста давать какой-то отчет,
далее все ненужные файлы удаляются и остаются только библиотеки и/или один исполняемый файл.
Кодом людям нужно помогать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.