Записать динамическую переменную в JSON файл в .gitlab-ci.yml
нужно записать в json файл динамическую переменную $CI_PIPELINE_SOURCE" из gitlab, подскажите, пожалуйста, как это сделать?
пробовал так:
after_script:
- touch allure-results/executor.json
- echo '{"name":"Gitlab", "buildName":"$CI_PIPELINE_SOURCE", "type":"gitlab"}' > allure-results/executor.json
но в таком случае в файл записывается имя переменной, а не сама переменная
Ответы (1 шт):
Автор решения: mrgervant
→ Ссылка
Необходимо экранировать кавычки обратной косой чертой - перед каждой кавычкой должна стоять \:
after_script:
- touch allure-results/executor.json
- echo "{\"name\":\"Gitlab\", \"buildName\":\"$CI_PIPELINE_SOURCE\", \"type\":\"gitlab\"}" > allure-results/executor.json
Кроме того, как кавычки для ключей и значений json, так и обрамляющие кавычки для echo, должны быть двойными:
- Формат JSON требует двойных кавычек, которые будут использоваться вокруг строк и имён свойств.
- В bash строки внутри одинарных кавычек считаются буквально и переменные не раскрываются - указываются их названия (что и произошло у Вас). При использовании двойных кавычек переменные будут развернуты - статья с примерами.
Внутри ключей/значений одинарные кавычки можно использовать:
- echo "{\"na 'm'e\":\"Gitlab\"}" > allure-results/executor.json