【发布时间】:2020-04-28 04:00:58
【问题描述】:
我正在 Azure 中为 .NetCore 3.1 应用程序创建 CI 管道并添加 Docker“buildandpush”任务。我有 2 种情况,如果我只运行 .Netcore 任务(恢复、构建、测试、发布)我的构建成功没有任何错误,如果我禁用上述 .NetCore 任务并且只运行 docker(buildAndpublish) 任务我的构建成功和图像推送进入我的 ACR,但如果我启用上述 .NetCore 任务和 Docker 任务,则会抛出错误 here。
谁能告诉我 .netCore 任务的构建定义,我在做正确的事情吗?
错误
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"]
【问题讨论】:
-
嗨。请不要为命令输出添加图像。它使您的帖子的可读性和信息量降低。此外,没有人可以从错误中复制/粘贴文本(例如,如果需要搜索),并且无法被内部或外部搜索引擎索引。请编辑您的问题并将相关的 docker build 阶段输出粘贴到代码块中。
-
dotnet restore 将对您的源文件夹进行更改。您可以尝试将 docker buildAndpublish 任务移动到构建管道的顶部,以便在 dotnet 任务之前运行它。
-
@Levi Lu-MSFT 是的,当我在没有 docker 任务的情况下运行构建时,我的构建成功了,但是与 Docker 一起抛出了一个错误,如果我禁用了所有 .net 任务并运行 docker任务其成功。但我想同时运行 .Netcore 任务和 docker 任务这两个任务,以便所有 .Netcore 构建成功,而不是将我的应用映像移动并推送到 Azure 容器注册表(ACR)
-
我认为您可以将 docker 任务分离到另一个代理作业中。这样docker和dotnet任务就不会互相影响了。
标签: docker azure-devops continuous-integration