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,然后在每个阶段对其进行定义...
我已经进行了很多搜索,但没有找到有关如何执行此操作的线索(也许实际上是不可能的。)
关于如何实现这一目标的任何想法?
提前感谢您的帮助!