【问题标题】:Jenkinsfile : how to modify a string parameter passed in pipeline jenkinsJenkinsfile:如何修改管道jenkins中传递的字符串参数
【发布时间】:2020-05-20 16:06:21
【问题描述】:

我正在使用 Jenkins 管道。

在我的 jenkinsfile 下,我在 shell 命令中调用 ansible playbook:

看起来像这样:

stage('Run Playbook') {
  steps {
    script{
      sh " ansible-playbook myplaybook.yml \
          -e myparam=\"${MY_PARAM}\" "
    }
  }
}

如您所见:在作业中我的参数是 MY_PARAM ,它是一个字符串参数,它可能包含一些空格。

我的目的是用逗号 (-) 替换所有空格,并将其传递给剧本?

所以有人建议我注入:

.replace('', '-')

但是使用 jenkinsfile 语法,我无法正确地做到这一点

建议?

【问题讨论】:

    标签: shell jenkins ansible jenkins-pipeline


    【解决方案1】:

    ${...} 中的所有内容都是常规 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}\""
        }
      }
    }
    

    但在这种有限的情况下,这似乎有点过头了。

    【讨论】:

    • 出于某种原因,当我这样做的时候。如果您想用作变量不起作用,则需要将其放入字符串中,例如: new_var="{$ANSIBLE_MY_PARM}".replace(" ", "-")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 2021-01-11
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    相关资源
    最近更新 更多