Jenkins-脚本化管道-如何执行以字符串形式动态创建的管道步骤

时间:2018-09-27 09:10:14

标签: jenkins jenkins-pipeline

我编写了一个脚本管道,该脚本管道使用Groovy作为String动态创建了所有管道步骤。动态地,因为要在执行时选择要使用的节点,这意味着我需要在执行时添加node (${nodeName}) { ... }代码块。

问题是我找不到执行最终String的解决方案。

我试图将最终的String放入一个Closure中,并在script { ... }步骤中执行该Closure,但这并不能解决问题。似乎整个String或Closure都被忽略了:

def getJobCodeBlockClosure() {
    ... ONLY AN EXTRACT
    def jobCodeBlockClosure = "{ "

    // add node blocks with opening brackets
    listOfNodeNames.each { nodeName ->
        jobCodeBlockClosure = """${jobCodeBlockClosure}
        node (${nodeName}) {
        """
    }
    ... ONLY AN EXTRACT
    return  {"${jobCodeBlockClosure}"}
}

script {
    def jobCodeBlockClosure = getJobCodeBlockClosure()
    jobCodeBlockClosure()
}

是否有解决方案或解决方法来执行以字符串形式动态创建的管道步骤?是否可以在运行时将String作为.groovy文件存储到工作区中并执行该.groovy文件?还是从字符串创建一个临时作业并执行该临时作业? ...

最好的问候 詹斯

0 个答案:

没有答案