Подтвердить что ты не робот

Как правильно использовать завиток в файле конфигурации Travis-CI (YAML)?

Ok. Это медленно сводит меня с ума. Я создал CI на Travis для одного из моих проектов. Я запускаю некоторые тесты JUnit, и я хотел бы загрузить результаты тестов на свой собственный сервер, поэтому их гораздо проще просматривать.

В принципе, все, что я хочу сделать, это вызвать это:

curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F [email protected]

Так вот что я пытаюсь сделать в файле .travis.yml.

after_script:
 - curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F [email protected]

Проблема в том, что для строки выше я получаю ошибку, которая выглядит так:

$ {:"curl -H '\"Authorization"=>"Token someToken\"' -X POST http://my.server.com -F [email protected]"}
/home/travis/build.sh: line 45: Token someToken"' -X POST http://my.server.com -F [email protected]}: No such file or directory

Я узнал, что в YAML двоеточие представляет пару значений ключа, и я обнаружил, что можно использовать кавычки для выхода из двоеточия.

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

Например:

curl -H '"Authorization: Token someToken"'
curl -H "\"Authorization: Token someToken\""
curl -H "'Authorization: Token someToken'"
curl -H '"Authorization": Token someToken'

Мне кажется, что я глупо, и я знаю, что исправление для этого, вероятно, очень простое, но я чувствовал, что "убегающие кавычки в то время как избегают кавычек", и если кто-нибудь может просто указать мне в правильном направлении, я был бы действительно благодарен.

Я также связываюсь с этими вопросами, когда я пытался следовать им, чтобы решить мою проблему:

Удаление двоеточий в YAML

Как избежать символов индикатора (то есть: или -) в YAML

4b9b3361

Ответ 1

Хорошо - мне удалось решить (или взломать) эту проблему, создав простой bash script:

#!/bin/bash
curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F [email protected]

И затем я перейду к вызову script в файле .travis.yml:

- ./upload_script.sh

Все кредиты принадлежат @набиячлэвэлиь за предложение мне это решение в комментариях.

Любые другие - более приятные решения более чем приветствуются.

Ответ 2

В YAML двоеточия являются разделителями, которые разделяют ключи и значения карты.

Что у вас есть:

curl -H 'Authorization: token someToken' "https://api.github.com/repos/:owner/:repo/releases/tags/$TRAVIS_TAG"

это карта с ключом curl -H 'Authorization и значением token someToken' "https://api.github.com/repos/:owner/:repo/releases/tags/$TRAVIS_TAG". Вы можете видеть, как это проникает в конструкцию script.

То, что вы хотите, это строка с правильной кавычкой:

after_deploy:
  - "curl -H 'Authorization: token someToken' \"https://api.github.com/repos/:owner/:repo/releases/tags/$TRAVIS_TAG\""