Jenkins声明式管道中是否有一种方法可以选择动态代理“类型”?

时间:2020-04-08 12:29:01

标签: jenkins jenkins-pipeline jenkins-docker

Jenkins声明性管道和不同的代理“类型”(在我的情况下,是docker代理或“经典”代理)都遇到了问题。

我想要实现的是在不同的Jenkins主服务器上使用相同的管道,其中一个我必须使用 docker agent ,而另一个我可以使用'没有docker代理(由于操作系统版本),并且大多直接在master上运行。 然后,该想法是动态生成代理关闭(通过函数或通过共享库),以避免代码重复,并且必须维护同一管道的2个版本。

例如,类似这样的东西:

def agentSelector() {
    def agentClosure
    if (...) {
        agentClosure = agent { docker { ... } }
    } else {
        agentClosure = agent any
    }
    return agentClosure
}

pipeline {
    ...

    agentSelector()

    ...
}

由于某种原因(主要是使用docker容器),我无法将agent设置为none,然后在每个阶段对其进行定义...

我已经进行了很多搜索,但没有找到有关如何执行此操作的线索(也许实际上是不可能的。)

关于如何实现这一目标的任何想法?

提前感谢您的帮助!

0 个答案:

没有答案