如何避免Jenkins并行任务被取代或跳过?
Jenkins并行任务异常及重试挂起问题
我运行一个Jenkins任务,调用另一个Jenkins任务构建Azure环境。创建了二维数组[:]存储3个任务,调用parallel关键字后本该并行运行3个任务,但实际仅运行1-2个。尝试添加retry(3)处理失败分支,却出现任务无限挂起的情况,相关代码及现象如下:
初始并行任务代码
node(label: 'master') { def branches = [:] stage ('Parallel Builds') { for (int i = 0; i < 3; i++) { branches["branch${i}"] = prepare(i) } echo "branches: ${branches}" parallel branches } } def prepare(def num) { return { build job: 'Azure/Environment-General/Environment - Create', parameters: [ [$class: 'StringParameterValue', name: 'BOHSnapshotName', value: 'snap-win10-19.6.9-boh-cfc-qs'], [$class: 'StringParameterValue', name:'Terminal1SnapshotName', value: 'none'], [$class: 'StringParameterValue', name:'Terminal2SnapshotName', value: 'none'], [$class: 'StringParameterValue', name:'EnvironmentPrefix', value: 'jl250638-'+num] ] } }
现象:控制台显示并行运行时跳过部分任务
添加重试逻辑后的代码
node(label: 'master') { def branches = [:] branches.failFast = false stage ('Parallel Builds') { for (int i = 0; i < 3; i++) { branches["branch${i}"] = prepare(i) } echo "branches: ${branches}" } try { parallel branches } catch(Exception e) { e.getCauses().each { echo "${it.getShortDescription()}" } } } def prepare(def num) { return { try { build job: 'Azure/Environment-General/Environment - Create', parameters: [ [$class: 'StringParameterValue', name: 'BOHSnapshotName', value: 'snapPOSQSWithEDC1.2'], [$class: 'StringParameterValue', name:'Terminal1SnapshotName', value: 'none'], [$class: 'StringParameterValue', name:'Terminal2SnapshotName', value: 'none'], [$class: 'StringParameterValue', name:'EnvironmentPrefix', value: 'jl250638-0-PARALLEL-'+num], [$class: 'StringParameterValue', name:'ResourceGroupName', value: 'rg-aloha-pos-automation'] ] } catch(error) { echo "First build failed, let's retry if accepted" retry(3) { input "***Retry the job***" build job: 'Azure/Environment-General/Environment - Create', parameters: [ [$class: 'StringParameterValue', name: 'BOHSnapshotName', value: 'snapPOSQSWithEDC1.2'], [$class: 'StringParameterValue', name:'Terminal1SnapshotName', value: 'none'], [$class: 'StringParameterValue', name:'Terminal2SnapshotName', value: 'none'], [$class: 'StringParameterValue', name:'EnvironmentPrefix', value: 'jl250638-PARALLEL-'+num], [$class: 'StringParameterValue', name:'ResourceGroupName', value: 'rg-aloha-pos-automation'] ] } } } }
现象:控制台显示失败任务无限挂起
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

