Ошибка конвейера .NetCore CI в задачах docker - PullRequest
0 голосов
/ 10 января 2020

Я создаю конвейер CI в Azure для приложения .NetCore 3.1 и добавляю задачи Docker "buildandpu sh". у меня есть 2 случая, если я запускаю только задачи .Netcore (восстановление, сборка, тестирование, публикация sh), мой успех сборки Без каких-либо ошибок, если я отключаю вышеуказанные задачи .NetCore и запускаю только docker (buildAndpubli sh ) Задачи, связанные с успешной сборкой, и образ, вставленный в мой ACR, но если я включу вышеупомянутые задачи .NetCore вместе с Docker, выдает ошибку здесь .
Может кто-нибудь сказать мне определение сборки. Задачи netCore, я делаю правильные вещи.

ОШИБКА

C: \ Program Files \ dotnet \ sdk \ 3.1.100 \ NuGet .targets (123,5): ошибка: доступ к пути 'C: \ src \ RINWeb \ obj \ RIN MVC .csproj.nuget.dgspe c. json' запрещен. [C: \ src \ RINWeb \ RIN MVC .csproj]

Ошибка сборки.

C: \ Program Files \ dotnet \ sdk \ 3.1.100 \ NuGet.targets (123,5): ошибка: доступ к пути 'C: \ src \ RINWeb \ obj \ RIN MVC .csproj.nuget.dgspe c. json' is отказано. [C: \ src \ RINWeb \ RIN MVC .csproj]

0 Warning(s)
1 Error(s)

Время истекло 00: 00: 01.34 Команда 'cmd / S / C do tnet build "RIN MVC .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 Ответ

1 голос
/ 13 января 2020

Вы можете использовать два задания агента для запуска вашего конвейера. На задании агента для запуска задач do tnet и второго для запуска задачи docker.

Если вы используете classi c, просмотрите конвейер сборки. Вы можете нажать (...) на Pipeline , чтобы добавить работу агента. Пожалуйста, проверьте скриншот ниже.

enter image description here

Затем запустите docker задач в агенте job2 и настройте агентское задание2 в зависимости от успешного запуска агентского задания1. Пожалуйста, проверьте скриншот ниже.

enter image description here

Если вы используете конвейер yaml. Вы можете определить несколько заданий. Вы можете проверить здесь для получения дополнительной информации.

Обновление:

Вот пример сборки и pu sh для ACR в Microsoft. Вам не нужно использовать задачи do tnet для сборки и публикации sh вашего проекта только для проверки успешности сборки или нет, поскольку ваш док-файл просто повторяет те же команды do tnet. Вы можете использовать только задачу docker для создания файла дока.

Или вы можете изменить свой dockerfile, чтобы иметь только последний шаг копирования, чтобы скопировать опубликованные файлы из выходной папки задачи do tnet publi sh (удалить do * 1043) * восстановление, сборка, публикация sh шагов из dockerfile), для ваших задач do tnet уже выполнено восстановление сборки и публикация sh задач.

...