Не могу понять, как выполнить замену переменных в моем конвейере Tekton

Поэтому я не уверен, действительно ли это проблема Bash или проблема Tekton. Проблема возникает в моем конвейере OpenShift (Tekton). После развертывания моего приложения у меня есть шаг, на котором мне нужно проверить, действительно ли был создан.

Делается это так:

      until oc get deployment.apps/my-app-foo &> /dev/null
do
  echo . 
  sleep 2
done

В приведенном выше фрагменте я жестко запрограммировал имя «my-app». Суффикс «-foo» является частью каждого ресурса. Когда жестко запрограммирован, он работает, и, как и ожидалось, я получаю свой.

Когда я пытаюсь параметризовать имя Deployment, мой конвейер выходит из строя из-за следующей ошибки:

      Error from server (NotFound): deployments.apps "my-app" not found
.
Error from server (NotFound): deployments.apps "my-app" not found
.
Error from server (NotFound): deployments.apps "my-app" not found
.

Итак, проблема, очевидно, в том, что суффикс «-foo» не добавлен к моей переменной, и я не могу понять, как это сделать. Пытался заменить круглые скобки фигурными скобками, пробовал заключить в двойные кавычки все выражение и несколько других вариантов.

Вот мой код с подстановкой переменных:

      until oc get deployment.apps/$(params.pod-name)-foo &> /dev/null
do
  echo . 
  sleep 2
done

Может кто подскажет, что я делаю не так?

1 ответ

Не совсем уверен, в чем проблема, но, похоже, это как-то связано с синтаксисом подстановки переменных Tekton.

Во всяком случае, мне удалось обойти это, назначив параметр Tekton переменной bash, например так:

      POD_NAME=$(params.pod-name)
SUFFIX='-foo'

А затем я использовал эти переменные прямо в цикле «до тех пор» следующим образом:

      until oc get deployment.apps/${POD_NAME}${SUFFIX} &> /dev/null
do
  echo . 
  sleep 2
done

PS. Суффикс, вероятно, будет работать нормально, если его не помещать в переменную, но я использую его в некоторых других местах того же скрипта, поэтому я поместил его туда.

Другие вопросы по тегам