bamboo ssh task 실행 실패시 task 중지 하기
bamboo 로 deploy 시 컴파일이 필요없는 언어(PHP 등)는 간단하게 SSH Task 로 연결하여 git pull 정도의 작업으로 deploy 를 처리할 수 있습니다.
SSH 로 여러 명령을 실행할 경우 중간에 있는 작업이 실패해도 다음 작업으로 진행하므로 최종 작업만 성공하면 deploy 가 성공으로 보일 위험이 있습니다.
예로 Bamboo 의 Job 안에 다음과 같은 SSH Task가 있을 경우
아래의 git pull 명령은 저장소 명에 오타가 있어서 실패합니다.
echo 'Working on ' . `hostname` cd /var/www/my-web ## 저장소에 오타가 있어서 pull 실패 git pull origin masterq ## 아래 작업은 성공 printf "rev hash :\033[0;31m" printf `git rev-parse --verify HEAD` printf "\033[0m"
하지만 하단의 git rev-parse 명령은 성공하므로 최종 작업 결과는 성공으로 보여집니다.
이를 피하려면 SSH 의 주요 task 마다 리턴 값을 체크해서 처리하도록 스크립트를 작성해야 합니다.
echo 'Working on ' . `hostname` cd /var/www/my-web git pull origin masterq ## git pull 실패시 task 종료 if [ ! $? -eq 0 ];then echo "git pull failed" exit 1; fi ## 정상시 아래 작업 실행 printf "rev hash :\033[0;31m" printf `git rev-parse --verify HEAD` printf "\033[0m"
이럴 경우 git pull 이 실패하면 작업을 종료하므로 bamboo 의 build 결과에서 실패로 표시되므로 초기에 대응할 수 있습니다.