У меня есть фиктивный сценарий сборки в Gitlab CI
:Как установить переменную (окружение) в скрипте сборки в Gitlab CI?
pwd
ci_app_path=$(pwd)
echo "INFO: current directory: $ci_app_path"
и я получаю этот выход, когда начнет процесс сборки системы:
pwd
/home/kai/gitlab-runners/gitlab-ci-runner/tmp/builds/project-1
ci_app_path=$(pwd)
echo "INFO: current directory: $ci_app_path"
INFO: current directory:
так что переменная не была установлена (или был установлен только для этой строки: как я знаю, каждая строка выполняется отдельно)
Я слышал о механизме push/pop, чтобы достичь желаемой функциональности, но не смог найти никаких деталей, как реализовать это.
Update:
, как я думал, каждая строка будет выполнена отдельно. Таким образом, переменная сфера только одна линия, где она определена:
сценарий:
pwd
ci_app_path=$(pwd) && echo "INFO: current directory: $ci_app_path"
выход:
pwd
/home/devuser/gitlab-runners/gitlab-ci-runner/tmp/builds/project-1
ci_app_path=$(pwd) && echo "INFO: current directory: $ci_app_path"
INFO: current directory: /home/kai/gitlab-runners/gitlab-ci-runner/tmp/builds/project-1
Я не думаю, что писать весь сценарий, как одно- лайнер - хорошая идея/практика.
Как получить переменные, заданные при выполнении сценария сборки?
P.S.
на самом деле интересно, почему весь сценарий сборки не должен содержать пустых строк ?, в противном случае она возвращает:
No such file or directory
и сборки не будет работать на этом месте
Я не знаком с 'gitlab', но это то же самое тип проблемы, с которым сталкивается 'make' (возможно, это то, что использует' gitlab ci'?). С 'make' идея состоит в том, что если у вас есть много строк, вы должны сохранить их во внешний скрипт и выполнить make. 'Makefile' не является скриптом оболочки и не должен рассматриваться как один. «gitlab ci» может использовать тот же подход. – chepner