unagirabbit's blog

気づいたことをメモしています

【Jenkins】Pipelineで並列ビルドを無効にするオプション

概要

並列ビルドを無効にするにはoptionsdisableConcurrentBuilds()を追加します。

注意点として、
JenkinsはJobが並列実行される時、WORKSPACEを自動で分けてくれます。
通常時 -> ${JENKINS_HOME}/workspace/{job-name}
並列時 -> ${JENKINS_HOME}/workspace/{job-name@2}

このWORKSPACE分けはJobが実行されたタイミングで行わるため、
Pipelineの中で並列かをチェックしても${WORKSPACE}は振り分け済みです。

pipeline{
    agent any
    options{
        lock 'hoge'
    }
    stages{
        stage('stage1'){
            steps{
                // 意図しないcloneになっているかも
                git branch: 'main', url: 'hoge.git'
            }
        }
    }
}

WORKSPACE分けてほしくないという時はdisableConcurrentBuildsを使います。

pipeline{
    agent any
    options{
        disableConcurrentBuilds()
    }
    stages{
        stage('stage1'){
            steps{
                echo 'hello'
            }
        }
    }
}

親ジョブを作りlockで制御させるのもありです。

pipeline{
    agent any
    stages{
        stage('stage1'){
            options{
                lock 'hoge'
            }
            steps{
                build job: 'other_job'
            }
        }
    }
}