使用“:”的脚本命令导致.gitlab-ci.yml执行错误

时间:2020-03-25 13:54:31

标签: gitlab gitlab-ci

在我的.gitlab-ci.yml文件下面:

image: docker:latest

services:
    - docker:dind

stages:
    - deploy_dev_env

Deploy DEV Environment:

    stage: deploy_dev_env

    script:

        - curl -v -H "Content-Type: multipart/form-data" -X PUT -F uploadInput=@schema/schema.xml -F overwrite=true -F xmlaEnabledFlag=true -F parameters="DataSource=outputDS" -F parameters="EnableXmla=true" -u $PENTAHO_DEPLOY_USER:$PENTAHO_DEPLOY_PASSWORD http://$PENTAHO_HOST/pentaho/plugin/data-access/api/datasource/analysis/catalog/sca

这个非常简单的脚本会导致错误,因为"Content-Type: multipart/form-data"中的冒号(:)。

在脚本中运行CI Lint,我得到以下信息:

Status: syntax is incorrect

jobs:deploy dev environment:script config should be a string or an array containing strings and arrays of strings

如果我将"Content-Type: multipart/form-data"替换为"Content-Type multipart/form-data"(删除了“:”),则我的.gitlab-ci.yml文件的语法正确。

这是错误还是应该以其他方式重新编写curl命令?

2 个答案:

答案 0 :(得分:2)

我之前由于yaml语法而遇到此问题,而我发现的解决方法是

将“ Content-Type:应用程序/ json”存储为CICD设置中的环境变量 例如

Key: HEADER
Value: Content-Type: application/json

以及您的脚本

- curl -v -H "$HEADER" -X PUT -F uploadInput=@schema/schema.xml -F overwrite=true -F xmlaEnabledFlag=true -F parameters="DataSource=outputDS" -F parameters="EnableXmla=true" -u $PENTAHO_DEPLOY_USER:$PENTAHO_DEPLOY_PASSWORD http://$PENTAHO_HOST/pentaho/plugin/data-access/api/datasource/analysis/catalog/sca

答案 1 :(得分:1)

Docs警告Yaml脚本中的特殊字符:

注意:有时,脚本命令将需要用单引号或双引号引起来。例如,包含冒号(:)的命令需要用引号引起来,以便YAML解析器知道将整个内容解释为字符串,而不是“键:值”对。使用特殊字符时要小心::,{,},[,],,,&,*,#,?,|,-,<,>,=,!,%,@,`。

一种选择是使用yaml block scalar

Deploy DEV Environment:
    stage: deploy_dev_env
    script: >
        curl -v -H "Content-Type: multipart/form-data" -X PUT -F uploadInput=@schema/schema.xml -F overwrite=true -F xmlaEnabledFlag=true -F parameters="DataSource=outputDS" -F parameters="EnableXmla=true" -u $PENTAHO_DEPLOY_USER:$PENTAHO_DEPLOY_PASSWORD http://$PENTAHO_HOST/pentaho/plugin/data-access/api/datasource/analysis/catalog/sca

或使用其他方式访问escape colon in yaml