在Jenkins流程的每个阶段之后运行相同的职位

时间:2018-12-11 21:49:45

标签: jenkins jenkins-pipeline

假设我有以下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个后期作业在每个阶段作业之后执行而不是重复进行?我也希望下一个作业等待发布作业完成。

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"
    }

}