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

Jenkins Groovy中字符串插值未替换为实际值问题

问题原因

shell命令里用单引号包裹yq表达式,导致Jenkins全局变量$IMAGE_TAG和$ARGO_TARGETREVISION无法被shell解析,yq实际拿到的是字面量字符串,而非变量的真实值,所以YAML内容没被修改。

修复方案

把yq命令的单引号换成双引号,让shell能正常展开全局变量;同时调整sh命令的写法提升可读性:

stage('Clone abc repository and prepare abc-installer') {
    agent { label LABEL_CICD }
    steps {
        sshagent(credentials:['jenkins-deploy-password']) {
            sh '''
                whoami
                PWD=$(pwd)
                SCRIPT_DIR=${PWD}/installer
                
                yq -i ".abc-server.image.tag = \"$IMAGE_TAG\"" ${SCRIPT_DIR}/manifests/abc/values-single.yaml
                cat ${SCRIPT_DIR}/manifests/abc/values-single.yaml
                yq -i ".spec.source.targetRevision = \"$ARGO_TARGETREVISION\"" ${SCRIPT_DIR}/manifests/abc/abc.yaml
                cat ${SCRIPT_DIR}/manifests/abc/abc.yaml
            '''
        }
    }
}
补充说明
  • 改用三重单引号包裹多行sh命令,避免单行转义的繁琐,同时代码可读性更强
  • yq表达式里的变量用转义双引号\"包裹,确保变量值作为合法字符串写入YAML(纯数字变量可省略引号,统一添加更稳妥)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:05:17