Символы POSIX не работают на сервере CodeBuild - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь использовать команду linux для получения номера версии из моего файла package.json в проекте узла во время сборки. Я использую образ Ubuntu 18.04 в Codebuild. У меня есть следующая команда, которую я хотел бы запустить из buildspec.yml:

export PACKAGE_NAME=$(cat package.json | grep name | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g')

Проблема с этой командой в том, что awk -F: является недействительным YAML. Чтобы исправить это, я добавил символ пробела POSIX:

export PACKAGE_NAME=$(cat package.json | grep name | head -1 | awk -F:[[:space:]] '{ print $2 }' | sed 's/[",]//g')

Эта команда работает на Git Bash в Windows, работает на Ubuntu WSL, работает на Ubuntu 18.04, запущенной в экземпляре EC2, но не можетработать при запуске CodeBuild (переменная возвращается пустой), что не имеет никакого смысла для меня, так как команда Linux должна работать одинаково на том же типе Linux. Я проверил, что package.json находится в корне и доступен.

Итак, есть ли синтаксически лучший способ для достижения моей цели или есть способ заставить CodeBuild читать команду так же, как остальныеиз линуксов делать?

1 Ответ

0 голосов
/ 10 ноября 2019

Я решил это, установив jq на свой образ, а затем использовал его вместо:

PACKAGE_VERSION=$(jq -r ".version" package.json)
...