无法弄清楚如何在我的 Tekton 管道中进行变量替换

Can't figure out how to do variable substitution in my Tekton pipeline

所以我不确定这实际上是 Bash 问题还是 Tekton 问题。问题出现在我的 OpenShift (Tekton) 管道中。部署我的应用程序后,我需要检查 Deployment 是否已实际创建。

这样做是这样的:

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

在上面的代码片段中,我硬编码了 Deployment“my-app”的名称。后缀“-foo”是每个 Deployment 资源的一部分。当硬编码时,它可以工作,并且我得到了我的 Deployment,正如预期的那样。

当我尝试参数化 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

谁能告诉我哪里做错了?

不完全确定问题出在哪里,但似乎与 Tekton 变量替换语法有关。

无论如何,我设法通过将 Tekton 参数分配给 bash 变量来解决这个问题,如下所示:

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

然后我在 until 循环中直接使用这些变量,如下所示:

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

PS。如果不将后缀放入变量中,后缀可能会正常工作,但我在同一个脚本的其他地方使用它,所以这就是我把它放在那里的原因。