Переменная внутри переменной в Jenkinsfile - PullRequest
0 голосов
/ 17 декабря 2018

Каков правильный синтаксис Jenkinsfile для использования значения переменной при выполнении команды с другой переменной?

Например:

def lastItemIndex = "${json.items.size()-1}"
def path = "${json.items[${lastItemIndex}].assets.downloadUrl}"
echo "${path}"
  • Первыйпеременная lastItemIndex, а вторая * json.

  • Вторая строка не работает должным образом, когда я попробовал другие варианты.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Благодаря Мэтту, в конечном итоге это то, что у меня работает:

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

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

0 голосов
/ 17 декабря 2018

Синтаксис во второй строке в основном нормальный.Ваша проблема в том, что вы сохраняете возврат lastItemIndex в виде строки, а затем пытаетесь использовать его как целое во второй строке кода.

Вы можете исправить свою первую строку с помощью:

lastItemIndex = json.items.size() - 1

, и тогда это будет целочисленный тип, и def path = "${json.items[lastItemIndex].assets.downloadUrl}" будет успешным.

В качестве альтернативы, вы можете просто иметь вторую строку кода с:

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

для доступапоследний элемент массива.

Обратите внимание, что в общем случае, если вам нужно преобразовать строку в целое число в конвейере Jenkins через Groovy, вы можете использовать метод to_Integer.

...