Open Source로 구성된 Deploy Management System

해결과제

  •   오픈 후 운영시점에 다수의 개발자가 유지보수를 한다. 
       (  모든소스를 Build & deploy(통배포) 할수 없게 된다. 배포 되면 않되는 소스를 commit
          하지 않았다는 보장을 받을 수 없기에..)
  •     상용 배포관리 시스템(clear case, harvest..)을 도입할 만한 예산이 없다.


[그림 - deploy process]


배포절차


1. 이슈등록
설치된 Issue Management System인 jTrac 이나 redmine의 url로 접속하여 직접 이슈를 등록한다. 
등록된 이슈는 Uniq한 이슈번호(Issue#)가 생성된다. 이슈번호는 최종 배포시까지 적용될 소스들의 key word가 된다.  
2. commit
개발자는 소스를 변경하고 svn에 commit 한다. 
이때 commit comment에 이슈번호가 반드시 포함되도록, 입력한 이슈번호가 이슈관리 시스템에 등록된 번호인지 확인하는  설정이 있어야 한다. (이는  svn서버의 hook 디렉토리의 pre-commit 스크립트를 작성하면 가능하다)  
또한, eclipse에는 mylyn plugin이 설치되어 있어야 한다. mylyn plugin은
  • 자신에게 할당된 이슈리스트를 조회하고 적용할 이슈를 선택 할수 있게해준다.
  •  commit시에 comment에 현재 선택한 이슈에 대한 이슈번호를 자동으로 추가해준다
  • 현재 redmine은 plugin이 있으나 jTrac은 제작중이라 함. (기능은 redmine이 월등하게 앞서지만 jTrac보다 설치가 복잡하고 ruby on rail 이라는 생소한 환경에 익숙해야 한다. )

3. 개발배포
이슈관리시스템의 리스트에서 개발배포를 실행(jTrac- remote jenkins api를 이용, redmine - jenkins_api_client를 이용)한다. 이부분은 이슈관리시스템customizing이 필요함 

  • jTrac에서 jenkins의 job을 실행시키는 api 및 화면 
  • 이때 이슈번호를 파라마터로 넘겨줌 

jenkins은 전달받은 이슈번호를 파라미터로 하여 job을 실행시킴(customizing한 svnkit api를 jenkins 에 적용)
  • 이슈번호가 commit comment로 등록된 모든 resource를 trunk에서 tag/development로 copy
  • tag/development를 build하고 Development Server에 배포
 배포가 완료되면  was를 재시작하여 테스트를 진행

4. 운영배포
 개발테스트가 완료되면 이슈관리시스템에서 운영배포를 실행
jenkins은 이슈번호가 commit comment로 등록된 resource들을 tag/development에서 tag/production으로 copy
 tag/production을 build하고 이를 Production에 배포







댓글

이 블로그의 인기 게시물

Charset 변환 ( EUC-KR, UTF-8, MS949, CP933 )

GZipUtils- gzip을 통한 압축시 charset처리

비동기 메시지 처리 시스템(1)-JMS, RabbitMQ