You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:01:19