Здравствуйте.
Допустим имеется сл. 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 создать отдельный контейнер для тестов,
т.е. просто создать образ, прогнать тесты, если все успешно продолжаем дальше и создаем уже другой,
рабочий образ. Минус видится -- все это долго, да и не нужный образ создается. Второй вариант --
все делать в одном контейнере, по результатам теста давать какой-то отчет,
далее все ненужные файлы удаляются и остаются только библиотеки и/или один исполняемый файл.