从配置文件运行任何命令

时间:2019-09-28 06:42:56

标签: jenkins jenkins-pipeline jenkins-groovy

我为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参数运行任何命令?

1 个答案:

答案 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()

   }
}