groovy 如何在Jenkins参数中引用常量?

qjp7pelc  于 2023-02-03  发布在  Jenkins
关注(0)|答案(1)|浏览(215)

我在Pipelineconstant.groovy文件中有以下代码:

public static final list ACTION_CHOICES = [
    N_A,
    FULL_BLUE_GREEN,
    STAGE,
    FLIP, 
    CLEANUP
]

和Jenkins多振打器文件中的参数:

parameters {
    string (name: 'ChangeTicket', defaultValue: '000000', description : 'Prod change ticket otherwise 000000')
    choice (name: 'AssetAreaName', choices: ['fpukviewwholeof', 'fpukdocrhs', 'fpuklegstatus', 'fpukbooksandjournals', 'fpukleglinks', 'fpukcasesoverview'], description: 'Select the AssetAreaName.')
    /* groovylint-disable-next-line DuplicateStringLiteral */
    choice (name: 'AssetGroup', choices: ['pdc1c', 'pdc2c'])
}

我希望在参数中引用ACTION_CHOICES,如下所示:

choice (name: 'Action', choices: constants.ACTION_CHOICES, description: 'Multi Version deployment actions')

但对我没用。
我试着这么做:

choice (name: 'Action', choices: constants.ACTION_CHOICES, description: 'Multi Version deployment actions')

但对我没用。

wn9m85ua

wn9m85ua1#

Jenkinsfile(s)可以用定义的变量/常量来扩展(直接在文件中定义,或者(更好的说法是)从Jenkins shared library(这个场景)中定义)。
管道中的参数语法和常量列表的思想都很好,但缺少什么:这些部分的正确链接-正确的库导入。参见下面的示例 (示例中下面的名称不是刻在石头上的,当然可以更改,但要注意-Jenkins对文件名、路径等非常敏感(尤其是在共享库中))
Pipelineconstant.groovy应放置在Jenkins共享库的src/org/pipelines中。
Pipelineconstant.groovy

package org.pipelines

class Pipelineconstant {
   public static final List<String> ACTION_CHOICES = ["N_A", "FULL_BLUE_GREEN", "STAGE", "FLIP", "CLEANUP"]
}

然后你可以在Jenkinsfile管道中引用这个常量列表。
Jenkinsfile

@Library('jsl-constants') _
import org.pipelines.Pipelineconstant

 pipeline {
    agent any   

    parameters {
        choice (name: 'Action', choices: Pipelineconstant.ACTION_CHOICES , description: 'Multi Version deployment actions')
    }

    // rest of your pipeline code

}

管道的前两行很重要-第一行加载JSL本身!因此可以使用该导入的第二行(否则Jenkins将不知道在哪里找到Pipelineconstant.groovy文件。

    • B)不使用Jenkins共享库(文件在一个存储库中):**

我在这里找到了针对脚本化管道讨论和解决的主题:Load jenkins parameters from external groovy file

相关问题