首页 > 解决方案 > 使用流 DSL 将构建流迁移到管道中

问题描述

我有一个项目,我需要使用用 groovy 编写的流 dsl 插件脚本从旧的构建流迁移到管道中,我遇到了几个问题。根据我下面的一个问题的代码片段,我得到的是“预计会调用 Script1.func1 但最终捕获构建”,但它实际上会触发构建,但似乎不会执行“gv.funct1 (param1, param2) 和该脚本将以“java.lang.ArrayIndexOutOfBoundsException:5”结尾。我认为由于“func1”中的“构建作业”,它们与CPS有关?我尝试将@NonCPS放在“def func1”之前,但它没有t 工作 关于如何解决这个问题的任何建议?

我在 script.groovy 中有一个方法如下:

def func1 (param1, param2) {
    build job: param1, parameters: [string(name: 'PARAMETER2', value: 'param2')]
}

在管道中我有:

pipeline {
    stages {
       stage ("Build") {
           steps {
                 ...
                 gv = load "scripts.groovy"
                 
                 def myFile = readFile (fileToBeRead)

                 for (int i = 0; i < myFile.size(); i++) {
                     String[] param = ""
                     param = myFile.split(',')
                     gv.func1 (param[0], param[1])
                     ....
                 }
           }
       }
    }
}

标签: jenkinsgroovyjenkins-pipeline

解决方案


推荐阅读