我开始研究Azure Devops及其管道功能,以建立连续集成工作流。我有一个使用以下dockerfile构建我的应用程序的Docker映像的管道:
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中,您可以设置一个environment variable来欺骗它,以输出测试结果(我认为,仅xUnit ...)。但是不确定这里是否有类似的窍门...
我在Github上看到this post打算制作一个单独的测试图像以供测试,但我希望避免使用该方法,除非这是我唯一的选择。
还有其他CI / CD Azure Devops专家吗?