Jenkinsfile中的变量内的变量

时间:2018-12-17 08:54:53

标签: variables groovy jenkins-pipeline jsonparser

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

例如:

def lastItemIndex = "${json.items.size()-1}"
def path = "${json.items[${lastItemIndex}].assets.downloadUrl}"
echo "${path}"
  • 第一个变量是lastItemIndex,第二个变量是json

  • 当我尝试其他选项时,第二行无法正常运行。

2 个答案:

答案 0 :(得分:1)

第二行中的语法通常很好。您的问题是您将lastItemIndex的返回值存储为字符串,然后尝试在第二行代码中将其用作整数。

您可以使用以下方法修复第一行:

lastItemIndex = json.items.size() - 1

,然后它将是Integer类型,并且def path = "${json.items[lastItemIndex].assets.downloadUrl}"将成功。

或者,您也可以使用第二行代码:

def path = "${json.items[-1].assets.downloadUrl}"

访问数组的最后一个元素。

请注意,通常,如果您需要通过Groovy在Jenkins管道内将字符串转换为整数,则可以使用to_Integer方法。

答案 1 :(得分:0)

感谢Matt,最终这对我有用:

def lastItemIndex = json.items.size()-1

def path = json.items [lastItemIndex] .assets.downloadUrl