배포 스크립트 맨 위에 set -euo pipefail 넣어서 어디서 실패하면 바로 죽게 해놨는데, 중간에 분명히 실패하는 명령이 있는데도 스크립트가 그냥 끝까지 진행돼서 잘못된 결과가 배포됐습니다.
문제 구간을 줄여보니 이런 식입니다. 함수 안에서 검사하고, 그 함수를 || 로 감싸서 쓰고 있어요.
set -euo pipefail
check() {
grep -q "OK" build.log # 실패하면 여기서 멈추길 기대
do_deploy
}
check || echo "check failed, continuing anyway"grep이 실패하면 set -e 때문에 함수가 거기서 멈추고 스크립트 전체가 죽을 줄 알았는데, do_deploy 가 그냥 실행돼 버립니다. set -e 가 함수 안에서는 안 먹는 건가요?
댓글 0