Yaml GitLab CI文件中while循环的正确语法

Yaml GitLab CI文件中while循环的正确语法,yaml,gitlab-ci,Yaml,Gitlab Ci,我想在GitLab CI文件中编写一个while循环,下面是我尝试过但似乎不起作用的语法 while循环是否在GitLab或YAML文件中授权?还是有其他的写作方法 这里是我使用它的地方: - while ($(curl -X GET ${URL} | jq -r '.task.status') != "SUCCESS") ANALYSIS_ID=$(curl -X GET ${URL} | jq -r '.task.analysisId') 为什么不自己编写一个shell/pyth

我想在GitLab CI文件中编写一个while循环,下面是我尝试过但似乎不起作用的语法

while循环是否在GitLab或YAML文件中授权?还是有其他的写作方法

这里是我使用它的地方:

  - while ($(curl -X GET ${URL} | jq -r '.task.status') != "SUCCESS")
   ANALYSIS_ID=$(curl -X GET ${URL} | jq -r '.task.analysisId')

为什么不自己编写一个
shell/python/whatever
脚本,然后从CI运行它呢


YAML不是执行此类操作的合适语言(例如,
while循环,大条件,for循环
),不应以这种方式使用…

因此我这样做是为了解决我的问题,它是为了创建一个脚本,我在其中编写循环,而该脚本返回我需要的值,然后我在我的gitlab_ci文件中调用了这个脚本,如下所示:

  - ANALYSIS_ID=$(**./checkUrl.sh** $URL)
如果需要我用的脚本作为例子

  #!/bin/bash
    success="SUCCESS"
    condition="$(curl -X GET "$1" | jq -r '.task.status')"

    while [ "$condition" != "$success" ]
    do
    ANALYSIS_Id="$(curl -X GET "$1" | jq -r '.task.analysisId')"
    done
    return "$ANALYSIS_Id"

可能的副本不是我能读到的Gitlab CI只是以bash/sh的形式运行脚本。因此,您真正需要的是了解如何编写bash while循环,然后如何将其拆分为多行。是的,我有这个想法,我将尝试这样做。在YAML中,正确地执行循环和其他复杂的事情几乎是不可能的。为什么要采取艰难的方式,5行shell就很容易做到。我做到了,我会在实际中测试它,然后在这里回答。请注意,循环不是用实际的YAML编写的,YAML在这里只是用来存储一个字符串,这个字符串是bash/sh/powershell,具体取决于配置。@Jack.W您能解释一下您想做什么吗?