Как правильно использовать завиток в файле конфигурации 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
Ответы
Ответ 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\""