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



所以我不确定这实际上是Bash问题还是Tekton问题。这个问题发生在我的OpenShift(Tekton(管道中。部署完应用程序后,我有一个步骤需要检查Deployment是否真的已经创建。

这是这样做的:

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

在上面的片段中,我已经硬编码了Deployment〃的名称;我的应用程序";。后缀"-foo";是每个CCD_ 3资源的一部分。当进行硬编码时,它可以工作,并且我得到了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 oc get deployment.apps/${POD_NAME}${SUFFIX} &> /dev/null
do
echo . 
sleep 2
done

PS。后缀如果不放在变量中可能会很好,但我在同一脚本的其他地方使用它,所以我把它放在那里。

相关内容

  • 没有找到相关文章

最新更新