簡體   English   中英

如何使用 docker 在 Jenkins 中構建 .net 核心應用程序並將其推送到 ECR?

[英]How to build .net core application in Jenkins using docker and push it to ECR?

嗨,我正在學習使用 Jenkins 和 AWS 為我的 .net 核心應用程序構建管道。 我在https://github.com/niranjan2020/JenkinsPipeLine創建了示例應用程序我在本地下載了 Jenkins 並在端口 8080 上運行。我創建了用於創建 Z2E54334C0A5CE2E3E5A5845 管道的管道模板。

pipeline {
    agent any

    options {
        skipDefaultCheckout true
    }

    stages {
        stage('checkout') {
            steps {
                checkout scm
            }
        }

        stage('First Stage') {
            steps {
                echo "Yay! First stage is executed"
            }
        }
stage('Build') {
           agent {
              docker {
          image 'microsoft/dotnet:2.1-sdk'
          args '-u root:root'
        }
      }

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

        // sh 'echo "{\\\"buildNumber\\\":\\\"${BUILD_NUMBER}\\\", \\\"sha\\\":\\\"need to populate\\\"}" > Jenkins/buildinfo.json'
        sh 'echo Hi'
        sh 'chmod a+rw -R .'
        stash name: 'Jenkins-out', includes: 'Jenkins/out/**'
      }
    }
}
}

我想使用 docker 構建我的 .net 核心應用程序並將圖像放入 ECR。 使用上面的代碼,我能夠執行第一階段,但我無法執行第二階段。

process apparently never started in C:\Program Files (x86)\Jenkins\workspace\ECS@2@tmp\durable-8251f4a8
(running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true might make the problem clearer)

我收到此錯誤消息。 在上面的存儲庫中,我沒有添加 docker 文件。 我需要添加它嗎? 有人可以幫我解決這個問題嗎? 任何幫助,將不勝感激。 謝謝

如果您想在 ECR 上推送圖像,那么您應該將每個依賴項放在您的 dockerfile 中,就像在 Jenkins 中一樣,您可以運行 postscript,在容器中為您安裝 depencey,但在 AWS ECR 中並非如此。 您的 Docker iamge 應該能夠在沒有任何后期腳本的情況下運行。

你的 Dockerfile 看起來像

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o output
# Runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY --from=build-env /app/output .
ENTRYPOINT ["dotnet", "DotNetProject.dll"]

build-env將在第一階段構建您的應用程序,第二個將從構建階段復制構建應用程序。

如果您在 AWS VPC 中使用 Jenkins 服務器,請將角色分配給有權訪問 ECR 的 Jenkins 服務器。

如果在外面跑,則提供憑證

在此處輸入圖像描述

node {
  stage 'Checkout'
  git 'ssh://https://github.com/niranjan2020/JenkinsPipeLine'

  stage 'Docker build'
  docker.build('demo')

  stage 'Docker push'
  docker.withRegistry('https://1234567890.dkr.ecr.us-east-1.amazonaws.com', 'ecr:us-east-1:demo-ecr-credentials') {
    docker.image('demo').push('latest')
  }
}

使用您的 ECR 更新注冊表 URL。

你可以在這里進一步檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM