- git 프로토콜 사용을 위해 SSH 설정을 미리 해두세요! ( need SSH key )
- 배포 스크립트를 미리 만들어 두세요! ( need a script for dist )
$> node git2distd.js &
- 배포 서버: node, git, grunt 가 동작하는 환경
- Git 저장소: github, bitbuket 혹은 직접 구축한 git 서버
- 개발 환경: local이든 원격이든 git push만 할수있으면 됨.
- 먼저 배포 서버에 git2distd 데몬을 실행시킨다. 이녀석은 데몬이 실행됨과 동시에 지정된 Git 저장소의 해시값을 모니터링 하게 된다.
- 개발자는 배포할 코드를 master 브랜치로 머지하고 git저장소에 push한다.
- git2distd가 git저장소의 해시값이 변경됨을 감지하고, 지정된 배포 스크립트를 실행한다.
- 지정된 배포 스크립트는 git pull로 먼저 새로운 소스를 받은 다음 테스트를 돌리든, 빌드를 돌리든,.. 알아서 하시고,..
- 노드 애플리케이션 데몬을 재시작한다. (ex) $> forever restartall )
- 어머! 배포된 녀석에 버그가 있네?... 문제점이 발견되는 즉시,...
- 배포 서버에 들어가서 git checkout을 이용해 원하는 지점으로 소소코드를 롤백한다.
- 그리고 애플리케이션 데몬을 재시작한다.
- 롤백 끝!
- 재배포가 필요하면 다시 push 한다.
- 재배포 끝!
forever restartall 할 경우 데몬이 설정파일이 제대로 쓰여지지 않는 문제를 해결하기 위해 exectueScript() 함수에서 rewriteConfig() 함수의 위치를 변경함.