Используйте sed в groovy для замены значения в файле json - PullRequest
2 голосов
/ 05 апреля 2019

У меня есть файл json со следующим содержанием:

"containerDefinitions": [
  {
    "image": "***.dkr.ecr.us-east-1.amazonaws.com/xyz"
  }
]

Теперь я хочу заменить URL-адрес изображения новым значением. Поэтому в моем скриптовом файле jenkins groovy я сохраняю это существующее значение URL в некоторой переменной, а затем вводю новое значение URL, добавляемое к номеру сборки. Поэтому я пытаюсь сделать следующее:

newimageurl="\"***.dkr.ecr.us-east-1.amazonaws.com/xyz:v_$BUILD_NUMBER\""
oldimageurl="\"***.dkr.ecr.us-east-1.amazonaws.com/xyz\""
sed -i -e 's#'"$oldimageurl"'#'"$newimageurl"'#' ./myfile.json

Но это заканчивается ошибкой как для синтаксиса newimageurl для v_$BUILD_NUMBER, так и для команды sed.

Как решить эту проблему?

1 Ответ

1 голос
/ 05 апреля 2019

При определении строковой переменной в groovy вам не нужно добавлять двойные кавычки. Также у вас есть ошибка в интерполяции. Вы будете делать:

newimageurl = "***.dkr.ecr.us-east-1.amazonaws.com/xyz:v_${BUILD_NUMBER}"
oldimageurl = "***.dkr.ecr.us-east-1.amazonaws.com/xyz"

В вашей команде sed (также вы должны поместить ее в команду sh):

sh """
sed -i -e 's#${oldimageurl}#${newimageurl}#' ./myfile.json
"""
...