对于一个应用程序,我们正在考虑具有三个阶段的单个Jenkins管道。这是一个脚本化管道。
Dev 阶段应该在develop
分支的每次最新提交时触发
QA 阶段假设在develop
分支从release
分支派生之前,在develop
分支上的特定提交(准备就绪)上被触发。 / p>
Prod 阶段应在master
分支上的release
分支上的合并提交时触发。
类似这样的东西:
node('worker_node'){
stage('Dev-stage'){}
stage('QA-stage'){}
stage('Prod-stage'){}
}
stage(){}
是否可以独立触发?
或
stage('QA-stage'){}
应该在stage('Dev-stage'){}
之后立即被触发吗?
答案 0 :(得分:1)
正如评论中提到的@evolutionxbox,这些阶段将始终按顺序运行。理想情况下,您应该针对不同的步骤执行不同的工作,因为如果您永远不会在一项工作中使用所有阶段,那么它将超越阶段的全部目的。您可以根据需要将它们放在一个通用的jenkinsfile中,并且可以将if阻塞在以下阶段:
if(env.PARAM=="Value"){
stage('required stage'){
//code
}
}
或者您可以根据情况在同一文件中调用不同的功能:
stage('common'){
if(env.PARAM=="Value"){
commons.funct1()
}
}
此处commons变量将加载另一个文件(def commons=load('somefile.groovy')
)。