在我的管道中,我有一个参数,允许用户输入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代码/方法?无论哪种情况,我该如何解决我的问题?任何建议将不胜感激,谢谢!
答案 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"
}
}
}
}