1. 개요


  레드마인은 서브버전, 머큐리얼 등 소스 버전 관리 툴과 연동할 수 있는 기능을 제공한다. 현재 BitNami Redmine은 다음과 같은 저장소와의 연계를 기본적으로 지원한다. 

  • Subversion
  • Darcs
  • Mercurial
  • CVS
  • Bazzar
  • Git
  또한, 레드마인은 이클립스 플러그인인 MyLyn과 연동이 가능하고, 메일을 연동하여 매 변동사항을 관련자에게 메일로 전달할 수 있다.
  이번 포스팅에서는 Redmine에 아래와 같은 설정을 하는 절차를 알아본다.
  • Mercurial 저장소를 연동하여 Redmine에서 소스 관리가 가능하도록 한다. 
  • Eclipse MyLyn Plug-in 과 연동하여, Redmine의 일감을 MyLyn과 동기화한다. 
  • Redmine에 메일을 연동하여, 일감이 변경될 때마다 관련자에게 메일을 전송하게 한다. 


2. 레드마인과 머큐리얼 연동

  • 레드마인과 머큐리얼을 연동하기 위해 먼저 샘플 프로젝트를 생성한다. 


  • 생성한 프로젝트에서 설정 > 저장소로 들어간 후, 연동할 머큐리얼 저장소의 물리 위치를 설정한다. 
※ 저장소의 경로는 물리 경로를 의미한다. (C:\...)


  • 프로젝트의 "저장소" 탭으로 접속하여 이력이 정상적으로 동기화되는지 확인한다.



3. 레드마인과 이클립스 MyLyn 연동


  Bitnami redmine과  이클립스 MyLyn간의 연동에 관해 설명한 포스팅이 있어 이를 참고하였다. (출처 : 위클립스 - Redmine + Mylyn 조합 사용하기) 여기에서는 출처의 내용 중 내가 수행한 내용을 간략히 요약만 할 예정이다. 


  1) RESTful API 설치

  1. 시작 > 프로그램 > BitNami Redmine Stack에서 "BitNami Redmine Stack 사용" 선택 (또는 bitNami Redmine 설치 디렉토리의 use_redmine.bat 파일 실행)
  2. 콘솔에서 "[레드마인 설치경로]/apps/redmin/htdocs/plugins" 로 이동
  3. 아래의 명령 실행
> git clone git://github.com/danmunn/redmine_mylyn_connector.git
> gem install libxml-ruby
> bundle install --without development test
> rake redmine:plugins:migrate RAILS_ENV=production
※ 3번째 줄은 실행하지 않아도 무방하다.

  4. redmine을 재구동한다. 
     (프로그램 > BitNami Redmine Stack에서 "redmine manager tool" 참고)
  5. 재구동 이후 "관리 > 플러그인" 메뉴에서 플러그인이 보인다면 성공



  2) Redmine MyLyn Connector 설치

  1. 이클립스에서 다음 사이트 주소를 추가하여 커넥터 설치 (http://redmin-mylyncon.sourceforge.net/update-site/N/)
※ 가끔 업데이트 사이트에 연결되지 않아 설치가 진행되지 않는 경우가 있다. 적당히 시간이 지난 후 업데이트를 수행하면 재대로 설치된다. 


3) Eclipse MyLyn에서 Redmine 연동


  이제 MyLyn에 Task Repository를 등록하는 일이 남았다. 등록을 위해 수행해야 하는 작업은 아래와 같다. 


(1) 먼저 앞에서 설치한 RESTful API를 활성화해야 한다. Redmine에서 관리자 계정으로 로그인한 후, "관리 > 설정 > 인증"으로 차례로 접근한 후, "REST 웹 서비스 활성화"를 체크하고 저장한다.




(2) 로그인 상태에서 Redmine 상단 우측의 "내 계정"을 선택하면, 우측부분에 "API 접근키" 항목이 생겼다. "보기"를 누르고 해당 API 키를 복사한다. 



(3) 이클립스의 MyLyn에서 "New Task" 선택시 표시되는 창에서 "Add Task Repository" 버튼을 클릭한다. (또는 Task Repository View를 열고, 여기서 추가 가능) 다음 창에서 Redmine 을 선택한 후, Next를 누르면, 아래와 같은 창이 나타난다. 입력할 항목은 다음과 같다. 

  • Redmine 주소 (http://[ip]:[port]/redmine)
  • Label : 작업 저장소 이름
  • API-Key의 Enable을 체크하고, (2)에서 복사한 값을 붙여넣는다. 
모두 입력했으면 Validate Settings 버튼을 클릭하고, 정상적으로 연결됨을 확인한 후, Finish를 누른다. 


(4) 이제 MyLyn에서 새로운 Task를 연결된 Redmine에 등록할 수 있게 되었다. 테스트로 하나의 작업을 등록한 후, Submit을 눌러 등록한다. 




(5) 웹에서도 입력한 내용을 볼 수 있는지 확인한다. 




4. Redmine 메일 설정


  메일 설정과 관련된 자세한 내용은 아래의 주소들을 참고하여 작성하였다. 레드마인 2.x 버전 이후로 Gmail과 관련된 TLS 관련 설정에 변경이 생긴 듯하다. 

  1. 별도의 플러그인 설치 필요 없음
  2. 설정할 파라미터가 변경 (tls: true --> enable_starttls_auto: true)
자세한 내용은 아래 참고 주소를 참고한다.
http://www.redmine.org/boards/2/topics/30670 (맨 아래쪽, 답변자가 한국인임...-_-)
  • Redmine의 "관리 > 설정 > 메일 알림"에서 메일 알림과 관련된 옵션을 알맞게 편집한다.


  • configuration.yml 파일의 이메일 부분을 아래와 같이 편집한다. configuration.yml 파일은 [BitNami Redmine 설치 경로]/apps/redmine/htdocs/config 내에 존재한다. 
※ 해당 예제는 Gmail을 송신 메일로 설정할 때의 예시이며, 기타 사설 메일이나 다른 메일을 사용할 시에는 메일 공급자에 알맞은 정보를 입력해주면 된다. 
※ 설정 파일을 입력할 때 주의사항 
  (1) 앞쪽 공란은 Tab 키 대신 공란 2개를 사용해야 한다(설정파일의 주의사항)
  (2) user_name외의 값은 ""를 사용하지 말 것 
# default configuration options for all environments
default:
  # Outgoing emails configuration (see examples above)
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: smtp.gmail.com
      port: 587
      domain: smtp.gmail.com
      authentication: :plain
      user_name: "[송신 이메일 주소]"
      password: [송신 이메일 비밀번호]
  • Redmine을 재시작하고, "관리 > 설정 > 메일 알림"으로 접속하여 하단의 "테스트 메일 보내기"로 메일 테스트를 수행해본다. 






  1. 글 감사합니다. 도움이 많이 되었습니다.
    다른 글들은 고민과 실수를 많이하게되는데..
    이 글은 그저 따라가기만 하면 무안히 끝나네요.

    그리고 굳이 필요없지만 찜찜한
    sudo bundle install --without development test
    는 sudo 빼고
    bundle install --without development test
    실행하면 되네요.

1. Clone 개요


  머큐리얼의 Clone은 저장소를 복사하는 것을 의미하며, 단순히 저장소의 "현재 상태"를 복사하는 것이 아니라, 저장소의 모든 변경 이력 등을 함께 복사하는 것을 의미한다. 머큐리얼은 모든 사용자가 자신의 저장소를 이용하여 이력을 확인할 수 있고, 유연하게 변경 사항을 Push, Pull 할 수 있다. 따라서, Clone은 여러가지 형태로 활용이 가능하다. 

  • 프로젝트를 Checkout하기 위해 Clone을 수행할 수 있다.
  • 프로그램에 실험적인 코드를 적용하기 위해 Clone을 한 후, 변경 사항을 적용하거나, 해당 코드를 버릴 수 있다. 이러한 작업을 위해 SVN은 흔히 branch를 사용하며, 머큐리얼 역시 branch 기능을 지원하긴 하지만, 머큐리얼의 Clone을 통한 branch는 훨씬 유연한 branch 기능으로 활용될 수 있다. 

2. Clone 절차

  Eclipse에서 MercurialEclipse를 통한 Clone은 다음과 같은 과정을 통해 수행한다. 
  • Clone을 수행할 원본 프로젝트를 가지고 있는 외부 저장소의 웹 서비스가 실행되어 있어야 하며, 해당 서비스 주소를 알고 있어야 한다. 
  • 이클립스에서 New > Project > Clone Exists Mercurial Repository 를 선택한다. 


  • 표시되는 창에서 URL에 외부 저장소의 주소를 입력한다. Next버튼을 클릭한다. 


  • Revision 선택 창에서는 Revision을 선택할 수 있는 여러 옵션을 제공한다. Revisions 탭을 선택하면 여러 Revision 중 하나를 Clone할 수 있다. 원하는 Revision을 선택하고 Finish를 누른다. 




1. Push, Pull 개요


  머큐리얼의 Push, Pull은 타 저장소로 변경 사항(changeset)을 전송하는 과정을 의미한다. Push와 Pull을 설명하기 이전에, 머큐리얼의 Revision과 Changeset의 개념에 대해 간단히 정리할 필요가 있다. 

  • Revision은 특정 시점에 저장소의 상태를 표시하는 번호이다. 이 번호는 순차적으로 올라가게 된다. 
  • changeset은 저장소의 변경 사항을 저장하는 단위이며, 하나의 changeset을 commit하거나 다른 저장소로부터 pull/update하게 되면, changeset을 받아오게 되며, Revision 번호는 하나 증가한다.
  • Revision 번호를 changeset과 동일한 것으로 보는 경향이 있는데 이는 잘못된 것이다. 이는 머큐리얼이 각자의 저장소를 가지고 각자의 변경 이력을 관리할 수 있는 저장소를 제공하는 특성(즉, DVCS의 특성)에 기인한다. 
  즉, Push나 Pull을 통해 changeset을 교환하는 순서에 따라 머큐리얼의 changeset 번호는 순차적이지 않을 수 있으므로, Revert 등의 기능을 통해 특정 Revision으로 돌아갈 때 유의해야 한다. 또한, 이러한 단점을 보완하기 위해, 특정 Revision을 Tagging 하는 기능이 있고, 이를 자주 작성하는 것을 권장한다. 
  더 자세한 설명은 Joel의 Mercurial 소개 사이트(http://hginit.com/)를 살펴보기 바란다. 


  앞에서 언급했듯이, 머큐리얼의 Push, Pull은 "변경사항(changeset)을 전송" 하는 형태이므로, 상당히 유연하게 동작한다. 예를 들면 

  • 중앙 저장소와 변경 사항을 Push/Pull 할 수 있다. 
  • 특정 사용자에게만 변경 사항을 Push/Pull하여 적용하도록 할 수 있다. 예를 들자면, QA에게 변경한 코드를 전송한 후, 테스트가 끝나면 중앙 저장소에 Push 하는 형태로 활용할 수 있다. 
  • 자기 자신이 Clone 한 저장소에 변경사항을 Push/Pull 할 수 있다. 


2. 외부 저장소로 변경사항 Push

  변경사항을 commit했다면, Revision 번호가 변경되었을 것이고, 이를 외부 저장소에 Push해야 한다. MercurialEclipse에서 Push 과정은 다음과 같은 과정을 통해 수행한다.
  • 먼저 Push를 받을 원격 저장소의 Mercurial Web Server가 동작하고 있어야 하며, 해당 웹 서비스의 주소를 알고 있어야 한다. 
  • 변경사항이 있는 프로젝트를 우클릭하고, Team > Push를 수행하면 다음과 같은 창이 표시된다. URL을 입력한 후, Next를 눌러 Push할 changeset을 확인한 후, Finish를 눌러 Push를 완료한다.


  • Push한 changeset을 원격 저장소의 웹서비스를 통해 확인한다. 



3. 외부 저장소로부터 Pull


  Pull은 Push와는 대비되는 개념으로, 외부 저장소로부터 현재 변경된 changeset을 받아오는 과정을 의미한다. 

  MercurialEclipse에서 Pull은 다음과 같은 과정을 통해 수행된다. 

  • 먼저 Pull를 받을 원격 저장소의 Mercurial Web Server가 동작하고 있어야 하며, 해당 웹 서비스의 주소를 알고 있어야 한다. 
  • 변경사항이 있는 프로젝트를 우클릭하고, Team > Pull를 수행하면 다음과 같은 창이 표시된다. URL을 입력한 후, Next를 눌러 Pull할 changeset을 확인한 후, Finish를 눌러 Push를 완료한다.



  • ※ 머큐리얼은 일반적으로 Pull을 수행하면, Update를 통해 수신받은 changeset을 현재 프로젝트에 반영하는 과정이 한 단계 포함하나, MercurialEclipse의 실행 옵션 중 Pull Option에 "update after pull"이 체크되어 있어, Pull을 수행한 직후에 update를 수행해주도록 되어있다. 다른 머큐리얼 환경 (특히 command로 Mercurial 수행시) 유의하도록 하자. 




Eclipse를 통해 생성한 프로젝트를 머큐리얼을 통해 공유하는 방법을 알아본다.



1. 공유할 프로젝트 생성


Eclipse를 이용하여 공유할 프로젝트를 생성한다.
이 과정은 일반적인 이클립스 프로젝트 생성 과정과 동일하므로, 별도로 언급하지 않는다.


Maven 프로젝트로 생성한 프로젝트에 간단한 예제 파일을 넣어 프로젝트를 생성한다.



2. Mercurial Repository에 프로젝트 공유

  프로젝트를 공유하기 위해 다음과 같은 과정을 수행한다. 
  • 프로젝트를 선택한 후, 우클릭하여 Team > Share Project를 선택
  • 표시된 창에서 Mercurial을 선택한 후, 다음 창에서 Finish를 눌러 프로젝트를 머큐리얼로 공유
  • 첫 공유 이후 commit을 수행하여 현재 프로젝트의 첫 commit을 수행


  하지만 이 과정까지 수행한 것은 현재 자신의 머큐리얼 저장소를 생성한 것에 불과하며, 이렇게 될 경우, commit과 update가 가능하긴 하지만, 외부 저장소에 소스가 공유되지는 않는다. 실제 외부 저장소에 commit을 수행하려면, push를 통해 외부 저장소에 현재 프로젝트 이력을 전송하는 과정을 거쳐야 한다. 


3. 프로젝트를 중앙 Repository에서 Cloning


  2번까지의 과정을 통해 프로젝트를 머큐리얼을 통해 관리하는 것이 가능하다. 하지만, 중앙 저장소에 프로젝트를 공유하는 과정이 남아있다. 

  프로젝트 생성을 이클립스를 통해 수행했으므로, 이 프로젝트를 공유하기 위해서는 중앙 저장소에서 이 저장소를 Cloning 하는 과정을 수행해야 한다. 아래의 과정을 통해 Cloning을 수행한다.

  1. MercurialEclipse를 이용하여 Mercurial Web Server를 실행한다. 이 과정은 이클립스에서 프로젝트를 우클릭한 후, Team > Serve 를 통해 가능하다. 


  2. localhost:8000을 브라우져로 확인해본다. 정상적으로 실행되었다면, 생성하고 Commit한 프로젝트에 대한 정보가 페이지로 보이게 된다. 

  3. 머큐리얼 중앙 저장소의 Workbench를 실행하고, File > Clone Repository 를 수행한다. Source에는 Mercurial Web Server를 동작시킨 PC의 웹 주소(http://ip:port)를 입력하고, Destination은 Cloning한 저장소의 로컬 저장 위치를 입력한다. (빨간 상자 부분에 IP와 port를 입력하면 된다.)



  4. Workbench에서 Cloning 한 저장소의 정보를 확인한다. 



모든 작업이 끝났다면, 중앙 저장소에 web config 파일에 해당 정보를 업데이트 한 후, 머큐리얼 웹 서버를 재시작함으로써, 이후에 중앙 저장소에서 서비스가 가능하도록 한다. 




  머큐리얼을 Eclipse에서 직접 사용하기 위해서는 MercurialEclipse 플러그인을 설치해야 한다. 이 포스팅에서는 MercurialEclipse 플러그인을 설치하는 방법을 알아본다. 


  MercurialEclipse 플러그인 홈페이지는 다음 주소(http://javaforge.com/project/HGE)에서 확인할 수 있다. 



이 홈페이지에서 Download Now 버튼을 찾아 이동한 페이지에서 Eclipse Plugin 주소(http://cbes.javaforge.com/update)를 확인할 수 있다.




해당 주소를 입력하여 MercurialEclipse를 선택하고, 설치를 진행한다.

(주: codeBeamer를 함께 설치했으며, Eclipse는 전자정부표준프레임워크 2.5를 사용했으나, 설치시 Plugin-dependency 관련 에러가 발생했다. 이는 codeBeamer 관련 에러인 듯 하며, Mercurial 사용에는 전혀 문제가 없다.)





설치가 종료되고 이클립스를 재시작하면, Eclipse에서 새로운 프로젝트 설치시, 다음과 같이 Mercurial Project를 선택할 수 있다.






+ Recent posts