команда curl вызывает ошибку отступа в конвейере битбакета CI / CD YAML - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь добавить команду curl в свой CI / CD YAML на битбакете при развертывании в производственной среде. Команда curl отправляет запрос POST в CloudFlare API для очистки кеша. Команда включает -H переменных в качестве необходимых заголовков HTTP. Это вызывает ошибку отступа в битбакете, поэтому я не могу зафиксировать свои изменения и не знаю почему. Я не знаком с синтаксисом YAML и не знаю, как исправить эту проблему.

bitbucket-pipelines.YAML

image: python:3.7.4

clone:
 depth: full

pipelines:
   default:
     - step:
        caches:
          - pip
        script:
          - echo "nothing"
   branches:
      prod:
      - step:
          name: Deploy to Staging
          deployment: staging
          script: #staging script
           - git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_STAGING_APP_NAME.git HEAD:master --force
      - step:
          name: Deploy to Production
          deployment: production
          trigger: manual
          script: #production script
           - git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git HEAD:master --force
           - "curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE\purge_cache" -H "X-Auth-Email: $CLOUDFLARE_AUTH_EMAIL" \
          -H "X-Auth-Key: $CLOUDFLARE_AUTH_KEY" \
          -H "Content-Type: application/json" --data '{"purge_everything":true}'"

1 Ответ

3 голосов
/ 11 июля 2020

Вам нужно избегать двойных кавычек внутри команды. Кроме того, строки продолжения -H не имеют достаточно большого отступа - они должны иметь отступ больше, чем индикатор элемента списка в строке, где начинается скаляр.

Лучшим способом сделать это будет использовать свернутый блочный скаляр:

        - >-
          curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE\purge_cache"
          -H "X-Auth-Email: $CLOUDFLARE_AUTH_EMAIL"
          -H "X-Auth-Key: $CLOUDFLARE_AUTH_KEY"
          -H "Content-Type: application/json" --data '{"purge_everything":true}'

Свернутые блочные скаляры сворачивают новые строки в пробелы и не обрабатывают никаких специальных символов, поэтому вам не нужно ничего экранировать (и на самом деле в блочных скалярах нет управляющих последовательностей) .

...