Не могу понять, как выполнить замену переменных в моем конвейере 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. Суффикс, вероятно, будет работать нормально, если его не помещать в переменную, но я использую его в некоторых других местах того же скрипта, поэтому я поместил его туда.