Интерполяция переменных внутри Jenkinsfile - PullRequest
0 голосов
/ 03 мая 2018

Я прошу помощи сейчас, потому что я боролся с простой командой sed, вызываемой внутри Jenkinsfile, которая нуждается в небольшой переменной интерполяции.

Лучше показать команду вместо большого объяснения:

sh "sed -i -e 's/-RELEASE/-${unixEpoch}/g' myFile"

sed не согласен с этим синтаксисом и печатает, что команда s/ не завершена.

Я прочитал документацию Groovy о String и GString, но до сих пор не понимаю, что я делаю неправильно?

Есть какие-нибудь подсказки?

РЕДАКТИРОВАТЬ:

Я получаю unixEpoch, позвонив date +%s, чтобы получить текущую метку времени.

Я напечатал команду, просто чтобы убедиться, что выполнено, и нашел:

sed -i -e 's/-RELEASE/-1525341883'
/g' myFile

Полная ошибка, отправленная sed:

sed: -e expression #1, char 22: unterminated 's' command

Мне показалось странным, что напечатанная команда имеет \n в середине ...

1 Ответ

0 голосов
/ 03 мая 2018

date +%s имеет в конце новую строку, и когда вы интерполируете ее в сгенерированную sed, она включает эту новую строку, которая объясняет, почему sed жалуется. Вы можете сделать ${unixEpoch.trim()} или обрезать значение unixEpoch перед его использованием.

...