使用 Jenkins 管道仅执行选定的作业
Execute only selected jobs using Jenkins pipe line
我有这条 jenkins 流水线,它有多个阶段。在这些阶段中,有多个作业正在执行。
当我构建作业时,我希望有一组复选框,并且管道应该只构建我在管道阶段中检查过的内容。我可以使用任何插件或方法来实现这一目标吗?
管道代码示例。
根据下面的示例,有作业名为 job_A1、job_B1、job_C1、job_D1、job_A2、job_B2、 job_C2 和 job_D2。如果我单击“使用参数构建”,它应该提示我复选框,我应该能够检查我想要的任何作业,以便管道将只构建我检查的那些。
提前致谢。
pipeline {
agent {label 'server01'}
stages {
stage('Build 01') {
steps {
parallel (
"BUILD A1" : {
build job: 'job_A1',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD B1" : {
build job: 'job_B1',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD C1" : {
build job: 'job_C1',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD D1" : {
build job: 'job_D1',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
)
}
}
stage('Build 02') {
steps {
parallel (
"BUILD A2" : {
build job: 'job_A2',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD B2" : {
build job: 'job_B2',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD C2" : {
build job: 'job_C2',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD D2" : {
build job: 'job_D2',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
)
}
}
}
}
您可以使用ExtendedChoiceParameter来完成您想要的。基本上你也需要使用这个 jenkins 插件来参数化作业名称。
您可以使用屏幕截图中显示的复选框列表
感谢@mbn217 的回答,但 ExtendedChoice 参数对我的情况帮助不大。
无论如何,我可以使用布尔参数并使用脚本标记在管道内调用它。
管道脚本示例
stage ('BUILD A') {
steps {
script {
if (params.get('boolA',true)) {
build job: '_build_A', parameters: [string(name: 'param1', value: "$param1"),string(name: 'param2', value: "$param2")]
} else {
echo "A is not selected to build"
}
}
}
}
stage ('BUILD B') {
steps {
script {
if (params.get('boolB',true)) {
build job: '_build_B', parameters: [string(name: 'param1', value: "$param1"),string(name: 'param2', value: "$param2")]
} else {
echo "B is not selected to build"
}
}
}
}
我有这条 jenkins 流水线,它有多个阶段。在这些阶段中,有多个作业正在执行。 当我构建作业时,我希望有一组复选框,并且管道应该只构建我在管道阶段中检查过的内容。我可以使用任何插件或方法来实现这一目标吗?
管道代码示例。
根据下面的示例,有作业名为 job_A1、job_B1、job_C1、job_D1、job_A2、job_B2、 job_C2 和 job_D2。如果我单击“使用参数构建”,它应该提示我复选框,我应该能够检查我想要的任何作业,以便管道将只构建我检查的那些。
提前致谢。
pipeline {
agent {label 'server01'}
stages {
stage('Build 01') {
steps {
parallel (
"BUILD A1" : {
build job: 'job_A1',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD B1" : {
build job: 'job_B1',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD C1" : {
build job: 'job_C1',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD D1" : {
build job: 'job_D1',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
)
}
}
stage('Build 02') {
steps {
parallel (
"BUILD A2" : {
build job: 'job_A2',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD B2" : {
build job: 'job_B2',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD C2" : {
build job: 'job_C2',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
"BUILD D2" : {
build job: 'job_D2',
parameters:[
string(name: 'PARAM01', value: "$PARAM01"),
string(name: 'PARAM02', value: "$PARAM02")
]
},
)
}
}
}
}
您可以使用ExtendedChoiceParameter来完成您想要的。基本上你也需要使用这个 jenkins 插件来参数化作业名称。
您可以使用屏幕截图中显示的复选框列表
感谢@mbn217 的回答,但 ExtendedChoice 参数对我的情况帮助不大。 无论如何,我可以使用布尔参数并使用脚本标记在管道内调用它。
管道脚本示例
stage ('BUILD A') {
steps {
script {
if (params.get('boolA',true)) {
build job: '_build_A', parameters: [string(name: 'param1', value: "$param1"),string(name: 'param2', value: "$param2")]
} else {
echo "A is not selected to build"
}
}
}
}
stage ('BUILD B') {
steps {
script {
if (params.get('boolB',true)) {
build job: '_build_B', parameters: [string(name: 'param1', value: "$param1"),string(name: 'param2', value: "$param2")]
} else {
echo "B is not selected to build"
}
}
}
}