docker任务上的.NetCore CI管道错误

时间:2020-01-10 13:34:22

标签: docker azure-devops continuous-integration

我正在Azure中为.NetCore 3.1应用程序创建CI管道,并添加Docker“ buildandpush”任务。我有2种情况,如果我仅运行.Netcore任务(还原,生成,测试,发布),则生成成功没有任何错误,如果我在.NetCore任务上方禁用并且仅运行docker(buildAndpublish)任务,则生成成功并推送了映像到我的ACR中,但是如果我在.NetCore任务上方与Docker任务一起启用,则会抛出错误here
谁能告诉我.netCore任务的Build定义,我在做正确的事情。

错误

C:\ Program Files \ dotnet \ sdk \ 3.1.100 \ NuGet.targets(123,5):错误: 访问路径'C:\ src \ RINWeb \ obj \ RINMVC.csproj.nuget.dgspec.json' 被拒绝。 [C:\ src \ RINWeb \ RINMVC.csproj]

构建失败。

C:\ Program Files \ dotnet \ sdk \ 3.1.100 \ NuGet.targets(123,5):错误: 访问路径'C:\ src \ RINWeb \ obj \ RINMVC.csproj.nuget.dgspec.json' 被拒绝。 [C:\ src \ RINWeb \ RINMVC.csproj]

0 Warning(s)
1 Error(s)

经过的时间00:00:01.34 命令“ cmd / S / C dotnet build“ RINMVC.csproj” -c Release -o / app / build“返回非零代码:1

[错误]进程'C:\ Program Files \ Docker \ docker.exe'失败,退出代码为1

我的docker文件是:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1809 AS build

WORKDIR /src
#####COPY ["RINWeb/RINMVC.csproj", "RINWeb/"]
COPY ["RINMVC.csproj", "RINWeb/"]

RUN dotnet restore "RINWeb/RINMVC.csproj"
#####COPY . .
COPY . RINWeb/
WORKDIR "/src/RINWeb"
RUN dotnet build "RINMVC.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "RINMVC.csproj" -c Release -o /app/publish

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

1 个答案:

答案 0 :(得分:1)

您可以使用两个代理作业来运行管道。在代理作业上运行dotnet任务,在第二个作业上运行docker任务。

如果您使用的是经典视图构建管道。您可以点击管道上的(...)以添加代理作业。请检查下面的屏幕截图。

enter image description here

然后在代理作业2中运行docker任务,并将代理作业2配置为依赖于代理作业1的成功运行。请检查下面的屏幕截图。

enter image description here

如果您正在使用yaml管道。您可以定义多个作业。您可以检查here了解更多信息。

更新:

这里是在Microsoft中构建并推送到ACR的示例。您不需要使用dotnet任务来构建和发布项目,只需检查构建是否成功即可,因为您的ockfile只是重复相同的dotnet命令。您只能使用docker任务来构建停靠文件。

或者您可以修改dockerfile,使其仅具有最后一个复制步骤,以便从dotnet发布任务的输出文件夹中复制发布的文件(从dockerfile中删除dotnet还原,构建,发布步骤),对于您的dotnet任务,已经完成了retore的构建和发布任务。