Как построить проект dotnetcore в Дженкинс? - PullRequest
0 голосов
/ 19 октября 2019

Привет, я пытаюсь построить проект dotnetcore, используя jenkins. Ниже моя файловая структура.

locationservices.api
  locationservices.api
  locationservices.api.sln
    Dockerfile
    Jenkinsfile
    locationservices.api.csproj
    startup.cs
    //rest of the files

Ниже мой файл jenkins.

stage('Build') {
      agent {
        docker {
          image 'microsoft/dotnet:2.1-sdk'
          args '-u root:root'
        }
      }

      steps {
        sh 'apt update'
        sh 'apt install -y make'
        sh 'apt install -y apt-transport-https'

        sh 'echo "{\\\"buildNumber\\\":\\\"${BUILD_NUMBER}\\\", \\\"sha\\\":\\\"need to populate\\\"}" > locationservices.api/buildinfo.json'
        sh 'dotnet publish -c Release -o out'
        sh 'chmod a+rw -R .'
        stash name: 'mws-out', includes: 'locationservices.api/out/**'
      }
    }

    stage('Upload to ECR') {
      when {
        branch 'master'
        expression {
          currentBuild.result == null || currentBuild.result == 'SUCCESS'
        }
      }

      agent {
        label 'ec2-amazonlinux-v1'
      }

      steps {
        unstash name: 'mws-out'

        script {
          docker.build("location/location-service:v_${env.BUILD_NUMBER}", "--build-arg http_proxy=${env.http_proxy} --build-arg https_proxy=${env.https_proxy} .")
          docker.withRegistry('path', "ecr") {
            docker.image("location/location-service:v_${env.BUILD_NUMBER}").push("v_${env.BUILD_NUMBER}")
            docker.image("location/location-service:v_${env.BUILD_NUMBER}").push("latest")
          }
        }
      }

Ниже мой dockerfile

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["locationservices.api.csproj", "locationservices.api/"]
RUN dotnet restore "locationservices.api.csproj"
COPY . .
WORKDIR "/src/locationservices.api"
RUN dotnet build "locationservices.api.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "locationservices.api.csproj" -c Release -o /app

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

Когда я запускаю в конвейере, я получаюошибка ниже.

Step 6/17 : WORKDIR /src
 ---> Using cache
 ---> 4cc3caf28136
Step 7/17 : COPY locationservices.api/locationservices.api.csproj locationservices.api/
 ---> Using cache
 ---> 2ecf1c39cc4a
Step 8/17 : RUN dotnet restore "locationservices.api.csproj"
 ---> Running in ba3d3b8d630a
[91mDid you mean to run dotnet SDK commands? Please install dotnet SDK from:
  https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
[0mThe command '/bin/sh -c dotnet restore "locationservices.api.csproj"' returned a non-zero code: 145

Я не уверен Почему я не могу построить свой проект в jenkins. Не удается при восстановлении. Может кто-нибудь помочь мне разобраться в проблеме? Любая помощь будет принята с благодарностью. Спасибо

1 Ответ

0 голосов
/ 19 октября 2019

Я уверен, что на компьютере / сервере, на котором работает Jenkins, не установлен Netcore SDK, который необходим для создания приложений Netcore. Вы можете найти файлы SDK здесь .

...