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

GitLab CI中yq 4.16.2不识别del()命令求助

问题排查与解决

问题根源

GitLab CI环境中的yq 4.16.2属于4.x早期版本,必须显式指定eval(或简写e)子命令才能执行表达式;而你本地使用的4.35.2版本已将eval设为默认子命令,可直接省略,这是版本差异导致的语法兼容性问题。你当前的else分支命令省略了eval,旧版本无法识别,因此抛出unknown command "del(.data)"错误。

修复方案

修改else分支的命令,补充eval子命令(或简写e),与true分支保持一致的语法:

修改后的CI代码

if [ $AUTH_ENABLED = true ]; then yq eval -i '.data.auth = "'$SECRET'" ' secret.yaml; else yq eval -i 'del(.data)' secret.yaml; fi

可选简写版本(用e代替eval)

if [ $AUTH_ENABLED = true ]; then yq e -i '.data.auth = "'$SECRET'" ' secret.yaml; else yq e -i 'del(.data)' secret.yaml; fi

补充说明

yq 4.x后续版本为简化使用,默认启用eval子命令,因此可以直接写yq -i '表达式' 文件;但4.16.2这类早期版本不支持该简化写法,必须显式声明eval子命令才能让程序识别后续的表达式内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:52:11