4

У меня есть фиктивный сценарий сборки в 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 

и сборки не будет работать на этом месте

+0

Я не знаком с 'gitlab', но это то же самое тип проблемы, с которым сталкивается 'make' (возможно, это то, что использует' gitlab ci'?). С 'make' идея состоит в том, что если у вас есть много строк, вы должны сохранить их во внешний скрипт и выполнить make. 'Makefile' не является скриптом оболочки и не должен рассматриваться как один. «gitlab ci» может использовать тот же подход. – chepner

ответ

0

К тому времени Gitlab-CI люди это исправить вы можете создать Makefile и экспортировать переменные внутри него и в Gitlab-CI передать переменные, например

PWD = $ PWD сделать

Makefile начинается с а: экспорт GOPATH = $ (PWD)

4

Gitlab CI просто играет команды оболочки, так что вы делаете в * ш:

export ci_app_path=$(pwd) 
echo "INFO: current directory: $ci_app_path" 
Смежные вопросы