如何在声明性plepleine中在docker代理和``常规''代理之间动态切换

时间:2018-11-08 03:55:15

标签: docker jenkins

我有一个jenkinsfile,根据某些参数,有时需要在节点上运行,有时在docker代理上运行。我想让jenkins管道在使用docker代理声明和更常规的代理声明之间动态切换。我唯一缺少的是如何对代理声明进行参数化。我正在尝试从一个变量传递一个代理声明开始,到目前为止我已经了解了

def agentDeclaration = {
    docker {
        label '...'
        image "..."
        args "..."
    }
}

...
pipeline { 
    agent agentDeclaration
    ...
}

但这失败并显示以下错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 117: Only "agent none", "agent any" or "agent {...}" are allowed. @ line 117, column 13.
           agent agentDeclaration
           ^

WorkflowScript: 117: No agent type specified. Must be one of [any, docker, dockerfile, kubernetes, label, none] @ line 117, column 13.
           agent agentDeclaration

我看到在herehere之前曾问过类似的问题。这可能吗?

1 个答案:

答案 0 :(得分:0)

尝试以def agentDeclaration = “{ docker { ... } }“之类的字符串形式传递docker agent声明,不要忘记在其中转义双引号。