我有这样的工作
template__build_docker是参数化工作,例如:
node {
[string(name: 'docker_name', trim: true)]
... build the container - git clone, etc ...
}
每个build_dockerA,build_dockerB ...执行此操作
stage('call build template'){
build job: 'template__build_docker ', parameters: [string(name: 'docker_name', value: 'MyDockerImageA')]
}
我知道这有点笨拙,而且使用声明性管道我可以使用主管道(不研究细节),但这就是我正在使用的东西。
问题:这是可行的方法还是对此有任何担忧,会使其成为实现管道重用/重构的不当方法?
我已经知道一个问题-如果我快速启动一些build_dockerX作业,然后再启动配置的“执行者数量”,那么我就会陷入僵局-这些作业无法启动模板作业,因为没有执行者可用。 >
或者还有其他类似的陷阱吗?
答案 0 :(得分:2)
答案是肯定的,但是您应该使用shared libraries。看一个写在here或one where there is whole declarative pipeline defined上的简单示例,该示例是从jenkinsfile中使用的。我还记得我在此处发布的question,也可以作为示例。
就“ gothas”而言,我认为仍然不可能从另一个库中加载一个詹金斯库。除此之外,它是完美的。