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

Jenkins推送镜像至GCP Artifact Registry遇400错误求助

问题排查与解决

核心错误分析

这个400错误本质是Docker请求Artifact Registry的Bearer Token时被拒绝,通常和认证配置、权限或镜像路径异常有关。

排查方向及修复方案

1. 移除重复认证步骤,避免配置冲突

你的Pipeline同时使用了gcloud auth configure-docker和手动docker login两种认证方式,二者都会修改Docker的认证配置,很容易导致冲突。建议保留其中一种即可,推荐用gcloud的方式更简洁:

修改Push阶段代码,移除手动docker login步骤:

stage('Push Docker Image') {
    steps {
        script {
            // 无需重复执行docker login,依赖之前configure-docker的配置直接推送
            sh "docker push ${ARTIFACT_REGISTRY_URL}:${env.BUILD_NUMBER}"
        }
    }
}

2. 验证服务账号权限

确保gcp-poc服务账号拥有Artifact Registry Writer权限(roles/artifactregistry.writer):

  • 登录GCP控制台找到该服务账号
  • 进入「权限」页面,确认已分配对应的角色
  • 若未分配,在项目或Artifact Registry仓库的权限设置中,添加角色Artifact Registry > Artifact Registry Writer

3. 检查ARTIFACT_REGISTRY_URL格式

确认ARTIFACT_REGISTRY_URL是完整的仓库路径,正确格式应为:
us-east4-docker.pkg.dev/[GCP_PROJECT_ID]/[ARTIFACT_REGISTRY_REPO_NAME]
如果仅写了区域域名(如us-east4-docker.pkg.dev),或项目ID/仓库名称错误,会导致推送路径无效,触发400错误。

4. 清理Docker认证缓存(可选)

如果之前的认证配置有残留,可在Pipeline开头添加清理步骤:

stage('Pre-Clean') {
    steps {
        sh "rm -rf ~/.docker/config.json || true"
    }
}

完整修改后的Pipeline片段参考

stage('Build Docker Image') {
    steps {
        script {
            dir('lil-node-app') {
                sh "docker build -t ${ARTIFACT_REGISTRY_URL}:${env.BUILD_NUMBER} ."
            }
        }
    }
}

stage('Authenticate to Artifact Registry') {
    steps {
        script {
            withCredentials([file(credentialsId: 'gcp-poc', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) {
                sh "gcloud auth activate-service-account --key-file=$GOOGLE_APPLICATION_CREDENTIALS"
                sh "gcloud auth configure-docker us-east4-docker.pkg.dev --quiet"
            }
        }
    }
}

stage('Push Docker Image') {
    steps {
        script {
            sh "docker push ${ARTIFACT_REGISTRY_URL}:${env.BUILD_NUMBER}"
        }
    }
}

内容的提问来源于stack exchange,提问作者jef chang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:57:14