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

CI流水线busybox环境执行kaniko读取build.args参数报错如何解决?

问题根因

1. Shell语法不兼容(核心报错原因)

你使用的gcr.io/kaniko-project/executor:v1.6.0-debug镜像基于busybox,默认shell是ash,ash不支持+=字符串累加赋值语法,你写的out+="--build-arg $i "会被ash直接当成完整命令尝试执行,所以会报out+=--build-arg ... : not found的错误。

2. CI配置语法错误

你CI脚本里的${$CI_PROJECT_DIR}写法错误,多了一个$符号,会导致路径解析失败,正确写法是${CI_PROJECT_DIR}。

3. 参数读取的潜在问题

你用for i in cat build.args``遍历文件内容时,会把行内的空格也作为分隔符切割参数,比如你示例里的title="Great image"会被拆成title="Great和image"两个独立字符串,最终导致--build-arg参数传递异常。


修复方案

1. 修改kaniko执行命令

替换原来的+=拼接逻辑,直接按行读取build.args生成参数即可,兼容ash语法:

/kaniko/executor \
  --context "$path" \
  --destination "$CI_REGISTRY_IMAGE" \
  $(while read -r arg_line; do echo "--build-arg $arg_line"; done < build.args)

2. 修正CI配置的变量写法

把CI脚本里的路径部分修改为:

${CI_PROJECT_DIR}/tools/scripts/build_docker.sh ${path}/build.args \
  --context $path \
  --destination $CI_REGISTRY_IMAGE \
  --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:39:01