Мое решение содержит:
- Проект 'A'
- Project 'Интеграционный тест * A
Теперь я создаю контейнер для Project О. И я исключаю интеграционные тесты, используя сценарий оболочки, который создает контейнер docker.
Docker Код контейнера:
docker run \
-v "$(pwd):/src" \
--workdir="/src" \
-e "FIRESTORE_EMULATOR_HOST=${FIRESTORE_EMULATOR_HOST}" \
-e "FIRESTORE_PROJECT_ID=${FIRESTORE_PROJECT_ID}" \
-e "EngineApiBaseUrl=http://engine/" \
-e "ConnectionStrings__SqlConnection=${SQL_CONNECTION_STRING}" \
--link "${container1}:container1" \
--link "${container2}:container2" \
--link "${container3}:container3" \
mcr.microsoft.com/dotnet/core/sdk:3.1-alpine \
dotnet test \
./FunctionalTest/FunctionalTest.csproj \
--logger "trx;LogFileName=../../test-result.trx"
Это прекрасно работает, он выполняет тесты с использованием ядра 3.1, однако я испытываю эту проблему:
https://github.com/grpc/grpc/issues/15605
И, в частности, в моем DockerFile у меня есть:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-alpine AS base
# in support of gRPC: https://github.com/grpc/grpc/issues/15605
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.8/main' >> /etc/apk/repositories && apk update --no-cache && apk add --no-cache bash libc6-compat=1.1.19-r11
WORKDIR /app
EXPOSE 80
Однако это изображение не найдено тестовым контейнером и выдает ошибку. Другая странная вещь заключается в том, что локально, указанные файлы (по ссылке выше) создаются в Build, а 'do tnet test' выполняет сборку. Но файлы все еще отсутствуют.
Могу ли я что-нибудь сделать для этого? Например, то, что я хотел бы сделать, но не хочу тратить час на то, чтобы сделать это, если это не сработает, - это загрузить файл вручную, распаковать его и скопировать в нужный каталог. Но вы видите, что возникает вопрос, что эти файлы обычно создаются при сборке.
У кого-нибудь есть рекомендации? Похоже, мне нужно построить другой конвейер, возможно, специально для интеграционных тестов, и продублировать композицию, чтобы я мог получить этот образ там ...