我正在使用 Jenkins 管道。
在我的jenkinsfile下,我在 shell 命令中调用了一个 ansible 剧本:
它看起来像这样:
stage('Run Playbook') {
steps {
script{
sh " ansible-playbook myplaybook.yml
-e myparam="${MY_PARAM}" "
}
}
}
如您所见:在作业中我的参数是MY_PARAM,它是一个字符串参数,并且可能包含一些空格。
我的目的是替换逗号 (-( 的所有空格,并将其传递给剧本 ?
所以我被建议注入:
.replace('', '-')
但是使用Jenkinsfile语法,我无法正确做到这一点
建议?
${...}
中的所有内容都是常规的Groovy表达式,因此您可以进行任何您想要的翻译。
stage('Run Playbook') {
steps {
script {
sh "ansible -playbook myplaybook.yml -e myparam="${MY_PARAM.replace(' ', '-')}""
}
}
}
或者,您可以在environment
块中进行此替换。
stage('Run Playbook') {
environment {
ANSIBLE_MY_PARAM="${MY_PARAM.replace(' ', '-')}"
}
steps {
script {
sh "ansible -playbook myplaybook.yml -e myparam="${ANSIBLE_MY_PARAM}""
}
}
}
但在这种有限的情况下,这似乎有些矫枉过正。