Do tnet publi sh on linux ошибка в docker (Azure сборка DevOps) - PullRequest
0 голосов
/ 01 апреля 2020

Я сам разместил linux агент сборки в Azure DevOps. Я пытаюсь собрать задачу & pu sh docker, и у меня возникает ошибка, подобная этой (локально tnet сборка сработала):

The specified task executable "node" could not be run. System.ComponentModel.Win32Exception (2): No such file or directory [/src/Cillian.csproj]

Мой журнал:

...
Step 11/26 : RUN dotnet build -c Release -o /app
 ---> Running in 9233fd642015
Microsoft (R) Build Engine version 16.5.0+d4cbfca49 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 1.51 sec for /src/Cillian.csproj.
/root/.nuget/packages/microsoft.typescript.msbuild/3.0.0/tools/Microsoft.TypeScript.targets(293,5): error MSB6003: The specified task executable "node" could not be run. System.ComponentModel.Win32Exception (2): No such file or directory [/src/Cillian.csproj]
...

Конвейер : AzureDevOpsImg

Мой Dockerfile:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src

COPY *.csproj ./
RUN dotnet restore
COPY . .
WORKDIR /src
RUN dotnet build -c Release -o /app

FROM build AS publish

RUN dotnet publish -c Release -o /app

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

1 Ответ

0 голосов
/ 01 апреля 2020

Нет такого файла или каталога

Просто сфокусируйтесь на этом сообщении об ошибке, dotnet build не смог найти файл csproj для продолжения сборки. Это наиболее распространенная ошибка в Azure devops, даже если она может быть успешно построена локально.

Это потому, что docker работает на уровне Repos / solution локально (например, VS). НО , для Azure devops CI он запускает docker в каталоге, где находится файл docker, который находится на уровне проекта.

В двух словах - это relative path, который может быть успешно использован в локальном поиске csproj, недоступен в Azure devops вообще. Поскольку рабочий каталог изменился.


Укажите $(Build.Repository.LocalPath) в качестве аргумента Docker 2.* Build context.

enter image description here

для YAML :

- task: Docker@2
  displayName: build
  inputs: 
    containerRegistry: DockerHub
    repository: xxx/xxx
    Dockerfile: Docker/TestWebApi/Dockerfile
    buildContext: '$(Build.Repository.LocalPath)' # Specify the context
    tags: latest
...