我可以在Jenkinsfile中使用函数构建阶段吗?

Sal*_*ley 5 groovy jenkins jenkins-pipeline

我想使用一个函数来构建Jenkinsfile的某些阶段。这将是一个包含多个重复阶段/步骤的构建-我不想手动生成所有内容。

我想知道是否可以做这样的事情:

_make_stage() {
    stage("xx") {
        step("A") {
            echo "A"
        }

        step("B") {
            echo "B"
        }
    }
}

_make_stages() {
    stages {
        _make_stage()
    }
}

// pipeline starts here!
pipeline {
    agent any
    _make_stages()
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,詹金斯(Jenkins)不喜欢这样-当我跑步时出现错误:

WorkflowScript: 24: Undefined section "_make_stages" @ line 24, column 5.
       _make_stages()
       ^

WorkflowScript: 22: Missing required section "stages" @ line 22, column 1.
   pipeline {
   ^
Run Code Online (Sandbox Code Playgroud)

那么,这里出了什么问题?_make_stages()函数实际上看起来像是返回了stage对象返回的内容。我将其放在函数调用中还是直接将其内联到管道定义中,为什么都重要?

Hug*_* M. 5

正如解释在这里,管道“脚本”不是简单的Groovy脚本,它们正在运行之前严重变形,在掌握一些零件,在奴隶一些地区,他们的状态(变量值)序列,并传递到下一个步骤。因此,不支持每个Groovy功能,实际上不支持简单功能。

这并不意味着您想要实现的目标是不可能的。您可以以编程方式创建阶段,但显然不能使用声明性语法。另请参见此问题以获取好的建议。