Jenkinsfile (Groovy) 中的多维数组

mvd*_*gun 1 arrays groovy multidimensional-array jenkins

我想在我的 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';
Run Code Online (Sandbox Code Playgroud)

如何在 Jenkinsfile (Groovy) 中获得相同的结果?我尝试创建一个新的 String 数组:

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'
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

tim*_*tes 6

那不是一个数组,那是一张地图。您可以像这样在一行中创建一个:

def deployData = [test:       [user: 'testuser',
                               host: 'testhost',
                               path: 'testpath'],
                  acceptance: [user: 'accuser',
                               host: 'acchost',
                               path: 'accpath'],
                  production: [user: 'produser',
                               host: 'prodhost',
                               path: 'prodpath']]
Run Code Online (Sandbox Code Playgroud)

或者:

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']
Run Code Online (Sandbox Code Playgroud)