В нашем проекте у нас есть сценарий оболочки, который должен быть настроен для настройки переменных среды для последующего процесса сборки или для запуска встроенных приложений.
Он содержит блок, который проверяет уже установленные переменные и выполняет некоторую настройку.
# part of setup.sh
for LIBRARY in "${LIBRARIES_WE_NEED[@]}"
do
echo $LD_LIBRARY_PATH | \grep $LIBRARY > /dev/null
if [ $? -ne 0 ]
then
echo Adding $LIBRARY
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBRARY
else
echo Not adding $LIBRARY
fi
done
т.е. он проверяет, если путь к библиотеке уже в $LD_LIBRARY_PATH
и если нет, то добавляет его. (Справедливости ради, это можно было бы написать по-другому (like here), но предположим, что сценарий должен достичь чего-то, что очень сложно сделать, не вызывая программу, проверяя $?
, а затем либо делайте одно, либо делаете другое).
.gitlab-ci.yml
затем содержит
before_script:
- yum install -y <various packages>
- source setup.sh
но бегун решает остановить до сценария в тот самый момент $?
ненулевой, то есть, когда Условный оператор решает добавить путь к $LD_LIBRARY_PATH
. Теперь приятно, что бегун gitlab проверяет $?
после каждой строки моего скрипта, но здесь было бы здорово, если бы строки в .gitlab-ci.yml
считались атомарными.
Есть ли способ избежать промежуточных проверок $?
в сценарии, который получен в .gitlab-ci.yml
?