Jenkinsfile 中变量内的变量

Variable inside a variable in Jenkinsfile

在使用另一个变量执行命令时,为了使用一个变量值,正确的 Jenkinsfile 语法是什么?

例如:

def lastItemIndex = "${json.items.size()-1}"
def path = "${json.items[${lastItemIndex}].assets.downloadUrl}"
echo "${path}"

第二行的语法基本没问题。您的问题是您将 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