假设我有以下Jenkins管道脚本:
node {
stage('Job A') {
build job: 'Job A', propagate: false
}
stage('Post job') {
build job: 'Cleanup', propagate: false
}
stage('Job B') {
build job: 'Job B', propagate: false
}
stage('Post job') {
build job: 'Cleanup', propagate: false
}
}
是否有一种更好的方法来让1个后期作业在每个阶段作业之后执行而不是重复进行?我也希望下一个作业等待发布作业完成。
答案 0 :(得分:0)
我正在考虑每个作业后所需的清理步骤是相同的,否则您将不会问这个问题。
最简单的方法是创建自己的函数,该函数构建给定的作业并进行清理。
要等待除非工作完成,否则可以将wait
参数设置为true
如果您使用的是scripted pipeline
,则可以使用以下代码。
脚本管道
node {
stage('build_job_a'){
build_and_clean('job_a')
}
stage('build_job_b'){
build_and_clean('job_b')
}
stage('build_job_c'){
build_and_clean('job_c')
}
}
def build_and_clean(job_name){
try{
echo "building a job: ${job_name}"
build job: ${job_name}, propagate: false, wait: true
echo "successfully build a job: ${job_name}"
}catch(e){
echo "error occurred while building job: ${job_name}"
}finally{
echo "Cleaning up"
}
}