Groovy:如何执行从詹金斯提取的sh命令“使用参数构建”

时间:2019-08-12 20:10:50

标签: bash jenkins groovy jenkins-pipeline jenkins-groovy

在我的管道中,我有一个参数,允许用户输入bash命令。我的目标是基本上在阶段的某个时刻通过该管道的groovy脚本执行这些命令。

到目前为止,我想出的解决方案是创建一个sh文件,将输入的bash命令写入该文件,然后执行它。下面的代码能够完成我想要的,但前提是用户输入单个bash命令

sh """
touch BEHAVE_EXTRA.sh
echo ${params.BEHAVE_EXTRA} > BEHAVE_EXTRA.sh
bash ./BEHAVE_EXTRA.sh
"""

如果我在Jenkins参数中放置了多个bash命令,则sh文件无法正确执行,并且管道失败。

是否有一种方法可以通过bash来完成所需的工作,还是仅应使用Groovy代码/方法?无论哪种情况,我该如何解决我的问题?任何建议将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

BEHAVE_EXTRA的参数类型是什么? 您将必须在其中使用“文本”进行多行显示。

在这里看到

pipeline{
agent any

parameters {
    text (defaultValue: '',
            description: 'Enter your Commands Here',
            name: 'BEHAVE_EXTRA')

}

stages {
    stage ('Bash from File'){
        steps{
            cleanWs()
            sh '''
                touch BEHAVE_EXTRA.sh
                echo "#!/bin/bash" > BEHAVE_EXTRA.sh
                echo "${BEHAVE_EXTRA}" >> BEHAVE_EXTRA.sh
                chmod 755 BEHAVE_EXTRA.sh
            '''
            sh "./BEHAVE_EXTRA.sh"
        }
    }
}

}