gitlab ci скрипты, во время которых $? разрешено быть ненулевым
В нашем проекте у нас есть сценарий оболочки, который должен быть создан для установки переменных среды для последующего процесса сборки или для запуска собранных приложений.
Он содержит блок, который проверяет уже установленные переменные и выполняет некоторые настройки.
# 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
и если нет, добавляет это. (Чтобы быть справедливым, это может быть написано по-другому(как здесь), но предположим, что скрипт должен достичь чего-то, что очень сложно сделать без вызова программы, проверки$?
а потом либо делать одно, либо делать другое).
.gitlab-ci.yml
затем содержит
before_script:
- yum install -y <various packages>
- source setup.sh
но бегун решает остановить сценарий до того момента$?
ненулевой, то есть когда оператор if решает добавить путь к$LD_LIBRARY_PATH
, Теперь хорошо, что бегун gitlab проверяет$?
после каждой строки моего сценария, но здесь было бы здорово, если бы строки в.gitlab-ci.yml
считались атомными.
Есть ли способ избежать промежуточных проверок$?
в сценарии, который получен в.gitlab-ci.yml
?