了解Jenkins Groovy脚本化管道代码

cetgtptt  于 2022-11-21  发布在  Jenkins
关注(0)|答案(1)|浏览(248)

我在这里看一个Jenkins脚本管道教程https://www.jenkins.io/blog/2019/12/02/matrix-building-with-scripted-pipeline/,发现我需要学习一些Groovy来理解这一点。
我已经阅读了Groovy文档,但仍然不能理解所有这些代码。我将列出有问题的地方。

1个

List getMatrixAxes(Map matrix_axes) {
List axes = []
matrix_axes.each { axis, values ->
    List axisList = []
    values.each { value ->
        axisList << [(axis): value]
    }
    axes << axisList
}
// calculate cartesian product
axes.combinations()*.sum()
}

在我看过的大多数Groovy文档中,它都定义了列表,比如List axes = []。上面的语法看起来更像是一个返回List的函数。如果这是什么,我在花括号里看不到任何return语句,这让我很困惑。

2

node(nodeLabel) {
            withEnv(axisEnv) {
                stage("Build") {
                    echo nodeLabel
                    sh 'echo Do Build for ${PLATFORM} - ${BROWSER}'
                }
                stage("Test") {
                    echo nodeLabel
                    sh 'echo Do Build for ${PLATFORM} - ${BROWSER}'
                }
            }
        }

我以前在Groovy脚本中看到过node的概念,其中有些是参数部分,即:node(nodelabel) {...},有时不带,即:node {...}。这个核心是Groovy还是Jenkins特有的东西?它是什么意思?我在哪里可以找到关于它的文档?

aiqt4smr

aiqt4smr1#

  1. getMatrixAxes是一个函数。在Groovy中,return语句是可选的。如果您没有显式返回函数中的内容,则返回方法或闭包主体中最后一个求值的表达式。在您的示例中,将返回由axes.combinations()*.sum()生成的输出。在本示例中,它将生成一个List。您可以从此处阅读更多内容。
    1.这些结构是Jenkins特有的。特别提到的语法来自Jenkins Scripted Pipeline Syntax。node {...}简单地表示在任何代理上运行。node(nodelabel) {...}表示在标签为nodelabel的代理上运行。Jenkins有一个新的作业DSL,称为声明性语法,它比脚本语法更受欢迎。您可以阅读更多关于herehere的信息。

相关问题