Команда сценария с использованием «:», вызывающая ошибку при выполнении .gitlab-ci.yml - PullRequest
2 голосов
/ 25 марта 2020

Ниже моего .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 ]

1 голос
/ 25 марта 2020

Я сталкивался с этой проблемой ранее из-за синтаксиса yaml, и я нашел обходной путь

. Сохраните «Content-Type: application / 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 голос
/ 25 марта 2020

Документы предупреждают о специальных символах в сценарии yaml:

Примечание. Иногда команды сценария необходимо заключать в одинарные или двойные кавычки. Например, команды, содержащие двоеточие (:), должны быть заключены в кавычки, чтобы синтаксический анализатор YAML мог интерпретировать все как строку, а не как пару «ключ: значение». Будьте осторожны при использовании специальных символов::, {,}, [,], ,, &, *, #,?, |, -, <,>, =,!,%, @, `.

Один из вариантов - использовать скаляр блока yaml

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

или использовать другой способ экранировать двоеточие в yaml .

...