You need to enable JavaScript to run this app. 更新Jenkins Artifactory插件后推送Docker镜像至JFrog仓库失败求助
优惠活动
大模型
产品
解决方案
定价
更多

更新Jenkins Artifactory插件后推送Docker镜像至JFrog仓库失败求助

问题定位与参数配置指南

官方文档第3步指令的实际含义

rtDocker.push是Artifactory Jenkins插件提供的Pipeline专用指令,核心作用是将本地Docker镜像推送至Artifactory制品库,同时自动关联采集到的构建信息。
两个必填参数的官方定义为:

  • 第一个参数:完整的Docker镜像引用(即镜像打标后的完整路径,格式为注册中心地址/仓库路径/镜像名:标签)
  • 第二个参数:目标Docker制品库的唯一标识(即Artifactory后台创建仓库时设置的key,插件会用这个值拉取对应仓库的配置完成推送校验)

你参考的代码片段里的拼接逻辑为:[基础Registry地址]/[实际镜像名:标签] = 完整镜像引用,其中<artifactoryDockerRegistry>占位符仅代表基础Registry地址段,不包含镜像名、标签内容。

报错核心原因

你目前的参数配置存在两处错误,直接触发了新版本插件的校验逻辑:

  • 把artifactoryDockerRegistry的值填成了带完整镜像名、标签的xxx.com/docker-local/xyz:latest,按照代码拼接逻辑,最终生成的第一个参数会变成xxx.com/docker-local/xyz:latest/hello-world:latest,完全不符合Docker镜像路径规范
  • 没有把模板里的示例镜像名hello-world:latest替换成你实际要推送的xyz:latest

新版本插件会对推送参数做强校验,从镜像路径中解析出的仓库标识和第二个参数传入的docker-local不匹配时,会主动调用后台接口拉取目标仓库配置,错误的参数格式直接导致接口返回400 Bad Request。旧版本插件校验较松,参数不规范也能正常推送,这也是你之前流程正常、更新插件后才报错的原因。

正确配置通用示例

以下示例对应你的场景:本地镜像为xyz:latest,Artifactory域名为xxx.com,目标仓库key为docker-local

直接传完整参数的写法

// 前置:初始化已在Jenkins中配置好的Artifactory实例
def artifactoryServer = Artifactory.server '你的Jenkins Artifactory实例ID'
def rtDocker = Artifactory.docker server: artifactoryServer

// 给本地镜像打符合推送要求的标签
sh 'docker tag xyz:latest xxx.com/docker-local/xyz:latest'

// 正确的推送指令
def buildInfo = rtDocker.push 'xxx.com/docker-local/xyz:latest', 'docker-local'

按官方模板拆分变量的写法

// artifactoryDockerRegistry 仅填写基础地址段,不带镜像名、标签
artifactoryDockerRegistry = "xxx.com/docker-local"
targetRepo = "docker-local"

// 拼接实际的镜像名和标签作为第一个参数
def buildInfo = rtDocker.push "${artifactoryDockerRegistry}/xyz:latest", targetRepo

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 08:06:02