我能够在Jenkins的构建部分执行shell脚本,通过执行cd到目录并执行驻留在我的Linux机器上的脚本。
然而,当我试图填充Active Choices参数时,通过从groovy脚本执行shell脚本,无论我尝试多少种方法,它都不工作。
输出始终是java.lang.UNIXProcess
请帮助。从过去的几天我一直在尝试,但没有成功
*以下是我尝试过的一些方法:*
def command =['/bin/sh', '-c', 'ssh user@host '/path/to/script.sh ' ']
def command = 'bash /path/to/script.sh'
我希望它能返回脚本的输出。
当我只执行"ls"命令,如def command = 'ls',那么它将列出主目录下的Jenkins文件,而不是脚本'
在上面添加更多内容。当我试图切换到当前工作空间时,它说目录未找到。
我正试图为主动选择参数编写脚本,我不确定如何使脚本的范围指向工作空间。
我的假设是如果我能够切换到Workspace目录,我可能能够执行驻留在我的Linux机器上的shell脚本
def proc = "ssh user@host '/path/to/script.sh'".execute()
proc.waitFor()
println "Exit code: ${proc.exitValue()}"
试试这个!?
根据我的理解,您可以通过在詹金斯主机上执行命令来尝试在参数设置中使用Groovy脚本填充Active Choices参数。
暗示你是在GUI中做的,一个非常基本的例子可以作为单个选择的起点:
def proc = 'echo Test'.execute()
return [proc.text]
一个简单的shell脚本示例:
def proc = '/var/jenkins_home/test.sh'.execute()
return [proc.text]
脚本内容:
echo "TestFromScript"
请注意,您必须将进程的输出返回给插件,并且此示例不包括任何错误处理。
另外,如果您尝试运行shell脚本,则需要脚本的完整路径,并且脚本必须具有正确的可执行设置。
你可以在这里找到更多关于使用Groovy执行的信息:
Groovy执行shell命令