Dictionary 如何在groovy的map变量中声明map并在Jenkins文件中调用它

Dictionary 如何在groovy的map变量中声明map并在Jenkins文件中调用它,dictionary,groovy,jenkins-pipeline,constants,Dictionary,Groovy,Jenkins Pipeline,Constants,我想在我的constants.groovy中为不同类型的环境声明映射变量: 试验 预生产 刺激 对于每一个,我希望有自己的URL和Jenkins用户凭证。 在管道本身将有一个选择参数,用户将不得不选择环境的种类。 一旦构建开始,管道将知道如何提取URL和Cred供用户选择。你知道怎么做吗?首先,我想我能帮上忙 更新 我得到了问题的答案,但在上面加了一个: 我如何在这里map内部map呢?假设用户选择了TEST,我希望它有3种类型的服务器:SQL,SSIS,SSRS。 这是正确的代码吗 Map m

我想在我的constants.groovy中为不同类型的环境声明映射变量:

  • 试验
  • 预生产
  • 刺激
  • 对于每一个,我希望有自己的URL和Jenkins用户凭证。 在管道本身将有一个选择参数,用户将不得不选择环境的种类。 一旦构建开始,管道将知道如何提取URL和Cred供用户选择。你知道怎么做吗?首先,我想我能帮上忙

    更新

    我得到了问题的答案,但在上面加了一个: 我如何在这里
    map
    内部
    map
    呢?假设用户选择了
    TEST
    ,我希望它有3种类型的服务器:
    SQL
    SSIS
    SSRS
    。 这是正确的代码吗

    Map myMap = [
        TEST:[SQL_URL:'', SSIS_URL: '', SSRS_URL: ''], credential,
        PREPROD:[SQL_URL:'', SSIS_URL: '', SSRS_URL: ''], credential,
        PROD:[SQL_URL:'', SSIS_URL: '', SSRS_URL: ''], credential
        ] as ConfigObject
    def props = myMap.toProperties()
    
    props [ env.environment_type ].SQL_URL
    props [ env.environment_type ].SSIS_URL
    props [ env.environment_type ].credential
    

    不确定您想要什么,但您可以在Groovy中声明一个映射文字,如下所示:

    Map myMap = [
        TEST:[ SQL_URL:'', SSIS_URL: '', SSRS_URL: '', credential:'' ],
        'PRE-PROD':[ SQL_URL:'', SSIS_URL: '', SSRS_URL: '', credential:'' ],
        PROD:[ SQL_URL:'', SSIS_URL: '', SSRS_URL: '', credential:'' ],
    ]
    

    注意
    PRE-PROD

    Tnx周围的单引号。因此,在我的
    jenkinsfile.groovy
    中正确使用它可以是:例如:
    load(“constants.groovy”);myMap['env.env.env.environment\u type'].url
    right?带引号的映射键:
    myMap[env.environment\u type]。url
    btw是字符串类型的
    env.environment\u type
    ?几乎正确。您不能将
    凭据留在外部(编译错误)。propper值应该是
    [SQL\u URL:'',SSIS\u URL:'',SSRS\u URL:'',凭据:'',
    我不知道ConfigObject是什么。对于您在问题中描述的用例,简单的groovy映射文字就足够了。