You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker镜像构建成功但上传失败,需修复警告并上传至Amazon ECR

解决Docker镜像上传Amazon ECR时的StageNameCasing警告问题

问题根源

你遇到的StageNameCasing警告并非来自Jenkins Pipeline的stage定义,而是来自构建镜像时使用的多阶段Dockerfile。报错提示的BUILD_IMAGE是Dockerfile中定义的构建阶段名称,ECR要求阶段名使用小写格式。

解决方案

找到Jenkins Pipeline中指定的Dockerfile路径./Docker-files/app/multistage/Dockerfile,将其中大写的阶段名BUILD_IMAGE改为小写(比如build_image),同时同步修改所有引用该阶段的代码。

修改示例

原Dockerfile中的阶段定义:

FROM maven:3.8.6-openjdk-17 AS BUILD_IMAGE
# 构建步骤...

修改后:

FROM maven:3.8.6-openjdk-17 AS build_image
# 构建步骤...

如果Dockerfile中后续有引用该阶段的代码,也要同步改为小写:

COPY --from=build_image /path/to/artifact /target/path

验证步骤

  1. 保存修改后的Dockerfile
  2. 重新运行Jenkins Pipeline,触发镜像构建与上传
  3. 检查是否仍有StageNameCasing警告,确认镜像成功上传至ECR

你的Jenkins Pipeline代码参考

def COLOR_MAP = [
    'SUCCESS': 'good', 
    'FAILURE': 'danger',
]
pipeline {
    agent any
    tools {
        maven 'MAVEN3'
        jdk 'OracleJDK17'
    }
    environment {
        registryCredential = 'ecr:us-west-2:awscreds'
        appRegistry = "819764105945.dkr.ecr.us-west-2.amazonaws.com/vprofileappimg"
        vprofileRegistry = "https://819764105945.dkr.ecr.us-west-2.amazonaws.com"
    }
    stages {
        stage('Fetch Code'){
            steps {
                git branch: 'docker', url: 'https://github.com/infratute/baseline-vprofile-project-complete.git' 
            }
        }
        stage('Build') {
            steps {
                sh 'mvn install -DskipTests'
            }
            post{
                success {
                    echo "Now Archiving"
                    archiveArtifacts artifacts: '**/*.war'
                }
            }
        }
        stage('UNIT TEST') {
            steps {
                sh 'mvn test' 
            }
        }
        stage('Checkstyle Analysis') {
            steps {
                sh 'mvn checkstyle:checkstyle' 
            }
        }
        stage('Sonar Analysis') {
            environment {
                scannerHome = tool 'sonar4.7'
            }
            steps {
                withSonarQubeEnv('sonar') {
                   sh '''${scannerHome}/bin/sonar-scanner -Dsonar.projectKey=vprofile \
                   -Dsonar.projectName=vprofile \
                   -Dsonar.projectVersion=1.0 \
                   -Dsonar.sources=src/ \
                   -Dsonar.java.binaries=target/test-classes/com/visualpathit/account/controllerTest/ \
                   -Dsonar.junit.reportsPath=target/surefire-reports/ \
                   -Dsonar.jacoco.reportsPath=target/jacoco.exec \
                   -Dsonar.java.checkstyle.reportPaths=target/checkstyle-result.xml'''
              }
               timeout(time: 3, unit: 'MINUTES') {
                    waitForQualityGate abortPipeline: true
                }
            }
        }
            
        stage('Build App Image') {
            steps {
       
                script {
                dockerImage = docker.build( appRegistry + ":$BUILD_NUMBER", "./Docker-files/app/multistage/")
             }

     }
    
    }
        stage('Upload App Image') {
            steps{
                script {
                docker.withRegistry( vprofileRegistry, registryCredential ) {
                    dockerImage.push("$BUILD_NUMBER")
                    dockerImage.push('latest')
                }
                }
            }
        }

    }
  
}

内容的提问来源于stack exchange,提问作者Darvin xavier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:23:10