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

Jenkinsfile中调用docker.build传多个--build-arg参数失败如何解决

Jenkins docker.build 多--build-arg参数传入报错解决方案

报错原因

这个报错通常是因为CODEARTIFACT_TOKEN变量值中包含空格、换行、引号等特殊字符,未做转义时会导致整个docker build命令被拆分为多个非法参数,Docker会误判存在多个构建上下文输入,触发"docker build" requires exactly 1 argument.报错。

解决方案

下面是两种可直接复用的稳妥写法:

方法1:对变量值加单引号包裹转义

直接对可能包含特殊字符的变量值用单引号包裹,避免shell将变量值中的空格识别为参数分隔符:

app = docker.build("myimg:${Version}", "--build-arg VERSION=${Version} --build-arg CODEARTIFACT_TOKEN='${CODEARTIFACT_TOKEN}' --no-cache .")

方法2:参数数组拼接(更适合多参数场景)

将所有构建参数存入数组后再拼接,Groovy会自动处理特殊字符转义,参数越多可维护性越高:

// 定义所有构建参数
def buildOpts = [
  "--build-arg VERSION=${Version}",
  "--build-arg CODEARTIFACT_TOKEN=${CODEARTIFACT_TOKEN}",
  "--no-cache",
  "."
]
// 拼接参数后调用build
app = docker.build("myimg:${Version}", buildOpts.join(' '))

额外注意事项

  • 提前校验参数变量非空:如果CODEARTIFACT_TOKEN为空值也可能导致参数错位,可在构建前增加判断逻辑确认变量已正确赋值。
  • 如果变量值本身包含单引号,可以改用双引号包裹并转义:--build-arg CODEARTIFACT_TOKEN=\"${CODEARTIFACT_TOKEN}\"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:30:03