Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Gitlab CI/CD创建和使用自定义用户函数_Bash_Gitlab_Gitlab Ci_Cicd - Fatal编程技术网

Bash Gitlab CI/CD创建和使用自定义用户函数

Bash Gitlab CI/CD创建和使用自定义用户函数,bash,gitlab,gitlab-ci,cicd,Bash,Gitlab,Gitlab Ci,Cicd,我尝试在我的gitlab配置文件中创建如下函数: deploy: stage: dev services: - docker:dind script: - myFunction () { api_pl_tmp=$(curl -s --header "PRIVATE-TOKEN: $TOKEN_VAR" "https://git.example.ru/api/v4/projects/1/pipelines/latest" |

我尝试在我的gitlab配置文件中创建如下函数:

deploy:
  stage: dev
  services: 
    - docker:dind
  script:
    - myFunction () {   api_pl_tmp=$(curl -s --header "PRIVATE-TOKEN: $TOKEN_VAR" "https://git.example.ru/api/v4/projects/1/pipelines/latest" | jq .) }
    - while myFunction; do
    - if [ $(echo $api_pl_tmp | jq -r .status) = "success"  ]
    - then
    - export PROJECT_CURRENT=$($api_pl_tmp  |  jq -r '{id:.id,sha:.sha[0:8]}' | base64)
    - break
    - fi
    - if [ $(echo $api_pl_tmp | jq -r .status) = "failed"  ]
    - then
    - echo "Error: Frontend can't be deployed!"
    - exit 1
    - fi
    - if [ $(echo $api_pl_tmp | jq -r .status) = "running"  ]
    - then
    - echo "Wait 5 sec... Frontend deploying!"
    - sleep 5
    - else
    - echo Unknow status $(echo $api_pl_tmp  |  jq -r .status)
    - exit 1
    - fi
    - done
但它不起作用,gitlab返回错误消息:

此GitLab CI配置无效:作业:部署到dev:script 配置应该是一个字符串或最多10级的嵌套字符串数组 深沉的


如何解决此问题,或者我的自定义函数中可能存在错误?

-
将命令与介于两者之间的命令分开。将命令作为一个命令,而不是多个命令。记住,它们是用空格连接的

脚本的问题是冒号-请参阅

还有
jq.)}
缺少一个
。首先在自己的shell中逐个检查脚本。请使用检查脚本


另外,
$($api_pl_tmp
缺少回音,引用时有很多问题。使用一致的缩进并尝试编写可读代码以尽量减少打字错误。

也许也可以将我的函数分离到
shell
文件?我得到错误
文件的意外结尾(预期为“}”)
@KamilCukHere is
也是jq。)}缺少一个请先将代码发布到您的终端并发送文本。假设换行符被空格替换。
deploy:
    stage: dev
    services: 
    - docker:dind
    script:
    - "colon=:"
    - myFunction () {
        api_pl_tmp=$(curl -s --header "PRIVATE-TOKEN$colon $TOKEN_VAR" \
        "https$colon//git.example.ru/api/v4/projects/1/pipelines/latest" | jq .);
      }
    - while myFunction; do
         if [ $(echo $api_pl_tmp | jq -r .status) = "success"  ]; then
            export PROJECT_CURRENT=$($api_pl_tmp  |  jq -r '{id:.id,sha:.sha[0:8]}' | base64);
            break;
          fi;
          if [ $(echo $api_pl_tmp | jq -r .status) = "failed"  ]; then
            echo "Error$colon Frontend cant be deployed";
            exit 1;
          fi;
          if [ $(echo $api_pl_tmp | jq -r .status) = "running"  ]; then
            echo "Wait 5 sec... Frontend deploying!";
            sleep 5;
          else
            echo Unknow status $(echo $api_pl_tmp  |  jq -r .status);
            exit 1;
          fi;
        done