如何为字典列表设置管道变量并将其传递给groovy

6mzjoqzu  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(134)

我有下面的管道代码:

stage ("distribution"){
    steps{
        script{
            def rules = [
                [
                    "service_name": "core", 
                    "site_name": "*", 
                    "city_name": "*", 
                    "country_codes": ["*"]
                ]
            ]
            amd_distribution_distribute_bundle distribution_rules: rules
        }
    }
}

amd_distribution_distribute_bundle.groovy文件中,我尝试打印它的值:

def call(Map parameters) {
    def DISTRIBUTION_RULES= parameters.distribution_rules
    sh '''
        echo ${DISTRIBUTION_RULES}
     '''
}

我在控制台里得到了一个空字符串。你知道少了什么吗?

0ejtzxu1

0ejtzxu11#

您使用的单引号不会从局部变量插入${DISTRIBUTION_RULES}变量。如果要将其与sh步骤一起使用(作为shell脚本执行),则需要使用双引号从局部变量插入值。

def call(Map parameters) {
    def DISTRIBUTION_RULES = parameters.distribution_rules
    sh """
        echo ${DISTRIBUTION_RULES}
    """
}

或者,如果您想使用单引号但仍然访问DISTRIBUTION_RULES值,则需要将其分配给环境变量。但是,请记住,该环境变量会强制转换分配给String的每个值。因此,如果您尝试将Map分配给env变量,则将获得其字符串表示。而不是真正的Map。shell脚本可以访问管道中设置的所有环境变量。

def call(Map parameters) {
    env.DISTRIBUTION_RULES = parameters.distribution_rules
    sh '''
        echo ${DISTRIBUTION_RULES}
    '''
}

相关问题