У меня есть проект pnet core mvc, помещенный под GitLab, он использует DockerFile для контейнерирования docker изображения. Теперь я хочу использовать функцию GitLab CI, выполнив 2 этапа сборки и тестирования.
Мой план - сборка для команды docker build; test - это команда docker pull and run. Я выполнил большую часть кода .gitlab.ci.yml, но у меня возникла проблема с этапом тестирования.
Похоже, что общий бегун gitlab docker image do tnet версия ниже, чем моя ожидаемая версия. Вот вывод:
It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.App', version '2.2.0' was not found.
- Check application dependencies and target a framework version installed at:
/usr/share/dotnet/
- Installing .NET Core prerequisites might help resolve this problem:
https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
- The .NET Core framework and SDK can be installed from:
https://aka.ms/dotnet-download
- The following versions are installed:
2.1.15 at [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Это мой Dockerfile
FROM microsoft/dotnet:2.2-sdk AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
# override the request to 5000
ENV ASPNETCORE_URLS=http://+:5002
# override to 5002
EXPOSE 5002
ENTRYPOINT ["dotnet", "ASPNetApp_2.dll"]
Вот мой .gitlab.ci.yml
image: docker:latest
stages:
- build
- test
services:
- docker:dind
variables:
IMAGE_NAME: ${CI_REGISTRY}/${CI_PROJECT_PATH}
build:
only:
- master
- develop
before_script:
- apk update && apk add bash
- chmod +x ./function.sh
- . function.sh
- get_image_tag
- echo $TAG
- docker login registry.gitlab.com -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD}
script:
- docker build -t $IMAGE_NAME:$TAG .
- docker push $IMAGE_NAME:$TAG
after_script:
- docker logout ${CI_REGISTRY}
stage: build
tags:
- docker
test:
stage: test
before_script:
- apk update && apk add bash
- apt-get install aspnetcore-runtime-2.2
- chmod +x ./function.sh
- . function.sh
- get_image_tag
- echo $TAG
- docker login registry.gitlab.com -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD}
script:
- docker pull microsoft/dotnet:2.2-aspnetcore-runtime
- docker pull $IMAGE_NAME:$TAG
- docker run -p 5002 $IMAGE_NAME:$TAG -it
after_script:
- docker logout ${CI_REGISTRY}
function.sh
#!/bin/bash
function get_image_tag(){
if [ "$CI_COMMIT_REF_SLUG" == "master" ]; then
export TAG="latest";
else
export TAG=$CI_COMMIT_REF_SLUG;
fi
}
Я был пытается sudo apt-get
, apt-get
, apk add
, но нет надежды, есть предложения?