Я начинаю исследовать функцию Azure Devops и ее конвейеров для настройки непрерывного рабочего процесса интеграции.У меня есть конвейер, который создает образ Docker моего приложения с использованием следующего файла dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build-env
WORKDIR /cicd
# restore (put more volatile, changing projects later in process)
COPY src/WebApp/WebApp.csproj ./src/WebApp/
RUN dotnet restore src/WebApp/WebApp.csproj -s http://mycontainerrepo.acme.com/repository/nuget/
COPY tests/WebApp.Test/WebApp.Test.csproj ./tests/WebApp.Test/
RUN dotnet restore tests/WebApp.Test/WebApp.Test.csproj -s http://mycontainerrepo.acme.com/repository/nuget/
# copy source
COPY . .
# test (if tests fail, no final image, yay)
RUN dotnet test tests/WebApp.Test/WebApp.Test.csproj
# publish
RUN dotnet publish src/WebApp/WebApp.csproj -o /publish
# runtime stage
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS release
COPY --from=build-env /publish /publish
WORKDIR /publish
ENTRYPOINT ["dotnet", "WebApp.dll"]
Вызов для запуска dotnet test
выполняется очень хорошо и выводит результаты на консоль, но я не знаюлюбой способ использовать этот результат в конвейере.В TeamCity вы можете установить переменную окружения , чтобы обманным путем вывести результаты теста (думаю, только xUnit ...).Но не уверен, что здесь есть подобная хитрость ...
Я видел этот пост на Github о создании отдельного тестового изображения только для тестирования, но надеялся избежать этого маршрута, если только он не мойoption.
Есть ли другие гуру CI / CD Azure Devops?