无法弄清楚如何在我的 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。如果不将后缀放入变量中,后缀可能会正常工作,但我在同一个脚本的其他地方使用它,所以这就是我把它放在那里的原因。
所以我不确定这实际上是 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。如果不将后缀放入变量中,后缀可能会正常工作,但我在同一个脚本的其他地方使用它,所以这就是我把它放在那里的原因。