使用SED命令在Jenkinsfile中用变量替换字符串

萨蒂亚

我有一个Jenkinsfile,我正在其中从AWS控制台中获取值;并存储在变量my_es_host中,并且我的terraform.tfvars文件中有一个参数,es_host=""我正在尝试在terraform文件中插入变量my_es_host的值。以下是我在Jenkinsfile中使用的sed命令:

sh 'sed -i "s/es_host=\"\"/es_host=\"$my_es_host\"/g" terraform.tfvars

这在Linux终端中按预期工作。但是,此sed命令在Jenkinsfile中不起作用。有人可以帮我吗?

粗暴的

我相信没有什么可以替代,因为它可能与模式不匹配。Jenkins本身将消耗一个引号反斜杠,因此您需要将它们加倍,例如:

pipeline {
    agent any
    environment {
        my_es_host = 'whatever'
    }
    stages {
        stage('sed') {
            steps {
                sh 'echo es_host=\\"\\" > terraform.tfvars'
                sh 'cat terraform.tfvars'
                sh 'sed -i "s/es_host=\\"\\"/es_host=\\"$my_es_host\\"/g" terraform.tfvars'
                sh 'cat terraform.tfvars'
            }
        }
    }
}

输出:

[Pipeline] sh
+ echo es_host=""
[Pipeline] sh
+ cat terraform.tfvars
es_host=""
[Pipeline] sh
+ sed -i s/es_host=""/es_host="whatever"/g terraform.tfvars
[Pipeline] sh
+ cat terraform.tfvars
es_host="whatever"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章