Jenkinsfile 中变量内的变量
Variable inside a variable in Jenkinsfile
在使用另一个变量执行命令时,为了使用一个变量值,正确的 Jenkinsfile
语法是什么?
例如:
def lastItemIndex = "${json.items.size()-1}"
def path = "${json.items[${lastItemIndex}].assets.downloadUrl}"
echo "${path}"
第一个变量是lastItemIndex
,第二个变量是json
。
当我尝试不同的选项时,第二行 运行 不正确。
第二行的语法基本没问题。您的问题是您将 lastItemIndex
的 return 存储为字符串,然后尝试在第二行代码中将其用作整数。
您可以通过以下方式修复第一行:
lastItemIndex = json.items.size() - 1
然后就是Integer类型def path = "${json.items[lastItemIndex].assets.downloadUrl}"
就成功了
或者,您可以只使用第二行代码:
def path = "${json.items[-1].assets.downloadUrl}"
访问数组的最后一个元素。
请注意,通常如果您需要通过 Groovy 在 Jenkins 管道中将字符串转换为整数,您可以使用 to_Integer
方法。
感谢马特,最终对我有用的是:
def lastItemIndex = json.items.size()-1
def 路径 = json.items[lastItemIndex].assets.downloadUrl
在使用另一个变量执行命令时,为了使用一个变量值,正确的 Jenkinsfile
语法是什么?
例如:
def lastItemIndex = "${json.items.size()-1}"
def path = "${json.items[${lastItemIndex}].assets.downloadUrl}"
echo "${path}"
第一个变量是
lastItemIndex
,第二个变量是json
。当我尝试不同的选项时,第二行 运行 不正确。
第二行的语法基本没问题。您的问题是您将 lastItemIndex
的 return 存储为字符串,然后尝试在第二行代码中将其用作整数。
您可以通过以下方式修复第一行:
lastItemIndex = json.items.size() - 1
然后就是Integer类型def path = "${json.items[lastItemIndex].assets.downloadUrl}"
就成功了
或者,您可以只使用第二行代码:
def path = "${json.items[-1].assets.downloadUrl}"
访问数组的最后一个元素。
请注意,通常如果您需要通过 Groovy 在 Jenkins 管道中将字符串转换为整数,您可以使用 to_Integer
方法。
感谢马特,最终对我有用的是:
def lastItemIndex = json.items.size()-1
def 路径 = json.items[lastItemIndex].assets.downloadUrl