jenkins - 运行时的 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"
}
}
}
}
}
}
解决方案
Groovy GStrings 周围的单引号可防止插值。改为使用if (params."${i}_instances" == "3" && params."${i}_disksize" != "80")
。
推荐阅读
- visual-studio-code - 在 Visual Studio Code 上集成 ZSH 时出现字体问题
- python - 有没有办法从 python 请求中捕获 InsecureRequestWarning
- xamarin - 在 Xamarin iOS 中的应用程序之间切换时 Web 服务请求卡住
- flutter - Dart & Flutter:如何将抽象类的实现传递给另一个类的构造函数?
- javascript - 单击下划线后使用jquery更改类名
- csv - 读取 CSV 以解析数据并将其存储在 Hash 中
- javascript - 根据 ECMAScript,带有参数的函数调用是否有效的左侧表达式
- sql - MVC(实体框架)将 ID 更改从“创建视图”保存到 SQL 数据库表
- laravel - 急切加载在 Laravel 中返回 null
- javascript - 在扩展页面上使用 content_scripts?