我为jenkins编写了一个共享库,其中有一个读取配置文件(yaml)并应根据输入执行命令的方法。
配置文件示例
commands:
- name: command 1
command: "sh 'ls -la'"
- name: command 2
command: "readYaml file: 'demo.yaml'"
方法代码
def command_executor(config){
config.commands.each { command ->
this.script.echo "running ${command.name} command"
// This is my problem how to run the command
command.command.execute().text
}
}
上面的示例在我的类中定义,我从/var/my_command_executer.groovy文件中调用它
如何从string参数运行任何命令?
答案 0 :(得分:0)
我找到了以下解决方案:
使用调用该命令的预定义方法名称创建临时groovy文件。
在方法中加载临时文件并调用该方法。
类似
def command_executor(config){
config.commands.each { command ->
this.script.echo "running ${command.name} command"
this.script.writeFile file: "temp.groovy" text: """
def my_command_executor(){
${command.command}
}
"""
def temp_command_executor = load "temp.groovy"
temp_command_executor.my_command_executor()
}
}