우리 프로젝트에는 후속 빌드 프로세스를 위해 환경 변수를 설정하거나 빌드 된 응용 프로그램을 실행하기 위해 소스가되는 쉘 스크립트가 있습니다.
이미 설정된 변수를 확인하고 약간 조정하는 블록이 있습니다. 라이브러리에 경로 $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
을 포함하지만, 만약 문이 $LD_LIBRARY_PATH
에 경로를 추가하기로 결정 때 주자 즉 순간 $?
제로가 아닌 전과 스크립트를 중단하기로 결정합니다. gitlab 러너가 내 스크립트의 각 라인 이후에 $?
을 확인하는 것이 좋지만 여기서는 .gitlab-ci.yml
의 라인이 원자 적으로 간주되면 좋을 것입니다.
.gitlab-ci.yml
에서 나온 스크립트에서 $?
의 중간 검사를 피할 수있는 방법이 있습니까?