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 결과에서 실패로 표시되므로 초기에 대응할 수 있습니다.