我有一个用例,其中我有多个管道,但每个管道在每个阶段运行相同的代码,唯一的区别是有些会运行所有阶段,有些会运行一些阶段。
如果我创建了单独的Jenkinsfile,其中包含相同的阶段代码,如果有一天我更改了配置,我将不得不更改所有地方。
那么,是否可以在单独的文件中创建stage
作为共享库,然后将它们导入到特定于管道的Jenkinsfile中?
例如,如果我有一个流水线1,它运行所有 * 阶段A、B和C*。
管道2仅运行 * 阶段B*。
并且流水线运行 * 阶段A和C*。
我可以创建3个单独的文件:
A.groovy
stage('A') {
steps {
//something
}
}
B.groovy
stage('B') {
steps {
//something
}
}
C.groovy
stage('C') {
steps {
//something
}
}
因此,在Pipeline-1 Jenkinsfile中,我可以用途:
pipeline {
agent any
stages {
import A
A.call()
import B
B.call()
import C
C.call()
}
}
等等。我知道上面的语法是不正确的,它只是为了解释需要做什么。
1条答案
按热度按时间pepwfjgg1#
因此,您基本上希望将整个舞台提取到一个单独的文件中,并从共享库中使用它。可以将整个阶段提取到共享库中,但使用声明性管道会变得非常复杂。另一方面,脚本管道允许您以非常简单的方式完成此操作。有一个非常详细的答案here,它详细介绍了如何使用这两种类型的管道来完成您想要的任务。在脚本管道的情况下,解决方案是创建一个类,其中包含您想要的阶段,然后通过类引用阶段,如下所示:
参考前面提到的答案以获得更多信息。