首页 > 解决方案 > 运行时的 jenkinsfile 参数名称解​​析

问题描述

我在jenkinsfile中有以下阶段,其中参数名称来自for循环“i”值:How to interpolate at run time the parameter value derived at run time

stage ('Create new part'){
          steps {
             script{
                 sh "mkdir ${WORKSPACE}/inventories && touch ${WORKSPACE}/inventories/hosts"
                  for (i in (["db", "pr", "pl", "ad", "lo", "log", "jm", "se", "fo", "me", "he"]) ) {
                       if ("${params."'$i'_instances"}" == "3" && "${params."'$i'_disksize"}" > "80") {
                          sh "echo 'Entered if loop'" 
                          sh "echo '['$i'-servers]'>> ${WORKSPACE}/inventories/hosts"
                          for (j=1; j<=params.$i_instances; j++) {
                              sh "echo '${params.project_name}-${params.environment_name}-${$i_prefix}-$j target_fs="${params.$i_FS_TYPE}" percentage_fs="{params.$i_fs_percentage}"' >> ${WORKSPACE}/inventories/hosts"
                            }
                         }   
                   }
                }
            }
          }

标签: jenkinsparametersjenkins-pipeline

解决方案


Groovy GStrings 周围的单引号可防止插值。改为使用if (params."${i}_instances" == "3" && params."${i}_disksize" != "80")


推荐阅读