jenkins 从NONCPS函数调用CPS函数

mo49yndu  于 2023-03-01  发布在  Jenkins
关注(0)|答案(1)|浏览(178)

我是Jenkins & Groovy的新手,我面临着一些小问题:在我的jenkins管道中,我有一个调用函数的阶段,该函数需要运行eachLine命令,正如大家都知道的,要使用eachLine命令,我们需要用"@NonCPS " Package 函数。
问题是我需要在eachLine循环中使用"sh"命令,而在@NonCPS方法中不允许使用"sh"命令。

    • 例如:**
@NonCPS
def SplitGitBlame(String gitBlameOutputAsText)
{
    def gerritUrl = ''
    gitBlameOutputAsText.eachLine{ line ->
        gerritUrl  = sh(returnStdout:true, script: 'gerrit query commit: ${line} --format=text | 
        grep 'url:'')
    }
}

(Of当然,这不是完整的脚本,这里没有逻辑,只是为了说明我的问题)。

    • 所以我的问题是**

1.有一种方法可以用类似的行为方法"替换" eachLine命令,而不需要@NonCPS Package ?
1.有办法在@NonCPS方法内部执行'sh'命令吗?
感谢您抽出宝贵时间!

5anewei6

5anewei61#

无法测试。所以,只是一个想法去没有noncps..

def gitBlameOutputAsLines = gitBlameOutputAsText.readLins()
for(line in gitBlameOutputAsLines){
  sh(...)
}

相关问题