【问题标题】:Multidimensional array in Jenkinsfile (Groovy)Jenkinsfile 中的多维数组(Groovy)
【发布时间】:2017-04-24 08:44:43
【问题描述】:

我想在我的 Jenkinsfile 中声明一个多维数组,其中包含不同环境的部署数据。在 PHP 中我会这样声明:

$deployData = [];

$deployData['test']['user'] = 'testuser';
$deployData['test']['host'] = 'testhost';
$deployData['test']['path'] = 'testpath';

$deployData['acceptance']['user'] = 'accuser';
$deployData['acceptance']['host'] = 'acchost';
$deployData['acceptance']['path'] = 'accpath';

$deployData['production']['user'] = 'produser';
$deployData['production']['host'] = 'prodhost';
$deployData['production']['path'] = 'prodpath';

如何在 Jenkinsfile (Groovy) 中实现相同的结果?我尝试创建一个新的字符串数组:

def deployData = new String[3][3][1]

deployData['test']['user'] = 'testuser'
deployData['test']['host'] = 'testhost'
deployData['test']['path'] = 'testpath'

deployData['acceptance']['user'] = 'accuser'
deployData['acceptance']['host'] = 'acchost'
deployData['acceptance']['path'] = 'accpath'

deployData['production']['user'] = 'produser'
deployData['production']['host'] = 'prodhost'
deployData['production']['path'] = 'prodpath'

在 Jenkins 中运行上述代码时,出现以下错误:

java.lang.IllegalArgumentException:参数类型不匹配

完整跟踪:https://pastebin.com/ZEBRFuAW

有谁知道如何像第一个 PHP 示例那样创建多维数组(包括相同的值分配以提高可读性)?

【问题讨论】:

    标签: arrays jenkins multidimensional-array groovy


    【解决方案1】:

    那不是数组,那是地图的地图。您可以像这样在一行中制作一个:

    def deployData = [test:       [user: 'testuser',
                                   host: 'testhost',
                                   path: 'testpath'],
                      acceptance: [user: 'accuser',
                                   host: 'acchost',
                                   path: 'accpath'],
                      production: [user: 'produser',
                                   host: 'prodhost',
                                   path: 'prodpath']]
    

    或者:

    def deployData = [:]
    
    deployData.test       = [user: 'testuser', host: 'testhost', path: 'testpath']
    deployData.acceptance = [user: 'accuser',  host: 'acchost',  path: 'accpath']
    deployData.production = [user: 'produser', host: 'prodhost', path: 'prodpath']
    

    【讨论】:

    • 非常感谢!知道如何在我的示例中使用 PHP,例如分配语法吗?为了可读性,我想像这样实现它。
    • @Gun5m0k3 添加了一种不同的表达方式...我认为它比问题中更具可读性,但我猜旁观者眼中的美;-)
    猜你喜欢
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多