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

Jenkins流水线调用Groovy函数时stages_to_run并行阶段未执行

解决Jenkins流水线加载外部Groovy函数后并行阶段不执行的问题

问题原因

你调用commonfunctions.function()后,只是获取了函数返回的并行阶段Map,但没有通过Jenkins的parallel步骤触发这些阶段执行,所以只有打印语句生效,并行阶段没启动。

解决方案

修改流水线代码,接收函数返回的阶段Map,并用parallel关键字执行它:

1. 确保外部Groovy文件的返回值结构正确

functions.groovy里的stages_to_run必须是键为阶段名称、值为包含stage逻辑的闭包的Map,示例如下:

def function() {
    println 'Hello from function'
    def map = [
        '并行阶段A': { 
            stage('并行阶段A') {
                echo '正在执行并行阶段A'
                // 这里放阶段具体逻辑
            }
        },
        '并行阶段B': { 
            stage('并行阶段B') {
                echo '正在执行并行阶段B'
                // 这里放阶段具体逻辑
            }
        }
    ]
    def stages_to_run = map.collectEntries { key, value ->      
        [key, value]
    }
    stages_to_run
}
return this

2. 修改流水线代码执行并行阶段

在pipeline.jenkins的script块中,接收函数返回的Map,并用parallel执行:

def commonfunctions
pipeline {
    agent any
    stages {     
        stage('Compare:') {
            steps {
                script {
                    commonfunctions = load 'pipelines/functions.groovy'
                    // 接收函数返回的并行阶段Map
                    def parallelStages = commonfunctions.function()
                    // 触发并行阶段执行
                    parallel parallelStages
                }
            }
        }
    }
}

关键注意事项

  • 必须使用Jenkins内置的parallel步骤来处理返回的阶段Map,这是触发并行执行的核心。
  • 确认load语句的文件路径正确,Jenkins需要能访问到pipelines/functions.groovy(比如该文件在你的代码仓库根目录的pipelines文件夹下)。
  • 确保stages_to_run中的每个闭包都正确包含stage定义,否则会导致执行异常。

内容的提问来源于stack exchange,提问作者Igor Nazarov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:02:15