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 示例一样创建多维数组(包括相同的可读性赋值)?
那不是一个数组,那是一张地图。您可以像这样在一行中创建一个:
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)