私たちのプロジェクトでは、後続のビルドプロセスやビルドされたアプリケーションを実行するための環境変数を設定するソースとなるシェルスクリプトがあります。
これは、既に設定された変数をチェックし、調整を行うブロックを含んでいます。ライブラリーへのパスが$LD_LIBRARY_PATH
に既にあるとされていない場合、それを追加した場合
# 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
すなわち、それがチェックします。 (公平には、(like here)とは違って書かれているかもしれませんが、プログラムを呼び出すことなくスクリプトを実行して$?
をチェックしてから、別のことをやるなど)
.gitlab-ci.yml
はその後
before_script:
- yum install -y <various packages>
- source setup.sh
が含まれていますが、if文が$LD_LIBRARY_PATH
へのパスを追加することを決定したときにランナーがすなわち瞬間$?
が非ゼロである前にスクリプトを停止することを決定します。 gitlabランナーがスクリプトの各行の後に$?
をチェックするのはいいですが、ここでは.gitlab-ci.yml
の行がアトミックであると考えられるとすばらしいでしょう。
.gitlab-ci.yml
のソースにある$?
の中間チェックを避ける方法はありますか?