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

时间:2019-05-27 16:37:37

标签: yaml gitlab-ci

我想在GitLab CI文件中编写while循环,这是我尝试过的语法,但似乎无法正常工作。

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

这是我用过的地方:

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

2 个答案:

答案 0 :(得分:1)

为什么不编写自己的shell/python/whatever脚本,而仅从CI运行它?

YAML不是执行此类操作的合适语言(例如while loops, large conditions, for loops),因此不应以这种方式使用...

答案 1 :(得分:0)

所以我这样做是为了解决我的问题,它创建了一个脚本,在其中我编写了循环而,此脚本返回了我需要的值,然后在我的脚本中调用了该脚本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"