업무의 대부분이 이메일로 소통되고 있는데, 이슈를 따로 레드마인에 가서 등록하는 비효율적인 영역의 업무를 줄이기 위해서는 이메일을 통한 이슈등록이 필요합니다. 이번에는 레드마인의 이슈를 이메일로 등록하는 방법을 진행해볼까 합니다.


운영 환경

OS : CentOS 6.x

Version : Redmine 2.2.0


이 글은 레드마인이 설치된 상태에서 시작하기 때문에, 레드마인이 설치되지 않은 경우는 이전글을 참고해서 설치하시기 바랍니다. http://yes.imhappyo.com/403



레드마인 2.x 버전에서는 설정에 필요한 기본적인 내용이 모두 포함되어 있으므로 실제 우리가 설정해야 하는 것은 자동으로 pop3 또는 imap 이메일 서버에 접근해서 이슈를 가져오게 만드는 과정뿐입니다.


저는 redmine@abydos.co.kr 이라는 이메일 계정으로 보내는 내용을 자동으로 레드마인에 등록하는 시나리오를 구상하고 다음과 같이 설정했습니다.


1) 이메일로 받는 것이 가능하도록 레드마인 관리자로 로그인하여 설정을 변경.

관리-> 설정-> 수신메일-> 수신메일에 WS를 허용 하고 키생성을 눌러서 API키를 생성해 둡니다.





2) cron을 이용하여 주기적으로 이슈를 가져오도록 설정.

5분마다 레드마인이 redmine@abydos.co.kr 계정의 imap 서버를 접근하여 이슈를 가져오는 cron 설정은 다음과 같습니다. (pop3를 사용하신다면 아래의 예를 참고하세요)


Gmail imap 서비스 사용하는 경우 crontab -e

0,5,10,15,20,25,30,35,40,45,50,55 * * * * rake -f /opt/webRoot/redmine/Rakefile redmine:email:receive_imap RAILS_ENV="production" host=imap.gmail.com username=redmine@abydos.co.kr password=PASSWORD port=993 ssl=1 project=issue_repo tracker=Issue allow_override=project,tracker,priority


Gmail pop 서비스 사용하는 경우 crontab -e

0,5,10,15,20,25,30,35,40,45,50,55 * * * * rake -f /opt/webRoot/redmine/Rakefile redmine:email:receive_pop3 RAILS_ENV="production" host=pop.gmail.com username=redmine@abydos.co.kr password=PASSWORD port=465 ssl=1 project=issue_repo tracker=Issue allow_override=project,tracker,priority


설정이 끝났습니다. 이제 여러분이 redmine@abydos.co.kr 에게 쓰는 메일은 기본적으로 issue_repo 라는 프로젝트로 Issue 라는 tracker로 자동으로 등록됩니다. 너무 간단하죠 :-)

뒤의 옵션 중 allow_override 는 메일의 본문에서 적는 내용을 우선해서 등록하라는 의미입니다.


2) 이메일을 보내서 등록된 이슈 확인


지금부터 이메일 본문에 아래의 내용이 있으면 이슈가 등록됩니다.

Project: 프로젝트아이디
Tracker: Issue(결함, 새기능, 지원, Issue)
Priority: 보통(낮음, 보통, 높음, 긴급, 즉시)
Status: 신규(신규, 진행, 해결, 의견, 완료, 거절)
Category: 설정한 카테고리
Assigned To: 홍길동(또는 id)



문제가 생겨서 진행과정을 디버깅하는 경우에는 맨뒤에 --trace 를 붙여서 실행하시면 됩니다.



참고) 레드마인 공식사이트에서 제공하는 관련 링크
http://www.redmine.org/projects/redmine/wiki/RedmineReceivingEmails






이번 글은 설치된 레드마인을 Eclipse와 연동하는 방법에 대해서 작성하려고 합니다.
기본적으로 레드마인 공식사이트에서 제공하는 아래의 링크에서 읽으면 되지만, 오픈소스 프로젝트들은 환경이 각각 다르기 때문에 한번에 쉽게 되는 법이 없죠 :-)
http://www.redmine.org/projects/redmine/wiki/HowTo_Mylyn


설치 환경

OS : CentOS 6.x

Version : Redmine 2.2.0

Eclipse : STS


이 글은 레드마인이 설치된 상태에서 시작하기 때문에

레드마인이 설치되지 않은 경우는 이전글을 참고하세요 - http://yes.imhappyo.com/403

저는 CentOS 6.x 를 사용중이고 Redmine 2.2.0 버전을 설치한 상태입니다.
레드마인 사이트의 공식 가이드나, 구글링에서 나오는 Eclipse 연동을 위한 예전의 글은
낮은 버전의 레드마인을 위한 설명이 대부분이라 적당한 문서를 찾지 못해서 기록해둡니다.

설치는 크게 2단계로 나누어집니다.
1단계 - 서버에 설치된 레드마인에 mylyn 플러그인을 추가하는 단계입니다.
2단계 - 이클립스가 설치된 개발용 PC에서 이클립스 플러그인을 깔고 설정하는 단계입니다.

1단계) Redmine 서버에 Mylyn Plugin 설치

Redmine 2.2.0 설치된 서버에 redmine_mylyn_connector plugin을 설치합니다
http://danmunn.github.com/redmine_mylyn_connector/


redmine_mylyn_connector를 설치하는 과정에서 libxml-ruby 의존성 문제 발생하네요
- 의존성문제는 다음과 같이 해결 (http://michael.f1337.us/2009/08/26/172339834/)

yum install gcc make libxml2-devel
Install the libxml-ruby gem:
gem install libxml-ruby --no-rdoc --no-ri


의존성을 해결했으니 이제 플러그인을 설치합니다.

 - 저는 postgresql sqlite을 사용하지 않기에 --without 옵션에 추가되었습니다

cd [redmine-install-dir]/plugins
git clone git://github.com/danmunn/redmine_mylyn_connector.git
cd ..
rake db:migrate_plugins RAILS_ENV=production
bundle install --without development test postgresql sqlite


설치를 완료했으면, 설치한 레드마인의 관리자> 환경설정> 플러그인 에서 아래의 화면이 있는지 확인합니다.



2단계) PC에 eclipse plugin 설치

Eclipse PC에 Mylyn Connector for Redmine 설치(저는 STS로 설치확인)
Window > Install New software > Update Site 에 아래주소를 추가합니다.

http://redmin-mylyncon.sourceforge.net/update-site/N/


주소를 추가하면 아래와 같은 화면이 나옵니다. 체크박스를 모두 체크한 후 설치를 진행합니다.




이클립스 플러그인설치를 마쳤이니 이제 이슈를 가져오는 설정을 합니다.


New > Task 를 생성합니다.







화면처럼 설정이 다 되었으면 Validate Settings 를 눌러서 접속을 확인해 봅니다.

정상적으로 접속이 되었다면 이제 이슈를 가져오는 Query 생성 과정을 진행합니다.

Task List 윈도우에서 마우스 오른쪽 버튼을 누르고 새 쿼리를 생성합니다.










기타 유용한 도구
Third Party Tools - http://www.redmine.org/projects/redmine/wiki/ThirdPartyTools
윈도우용 Tortoise SVN 클라이언트에 플러그인으로 동작하는 프로그램인데, 컨텍스트 메뉴로 Redmine에 입력하는 설정을 할 수 있게 해줍니다.

* turtlemine(Tortoise Redmine Plugin) - http://code.google.com/p/turtlemine/wiki/BugTraqConfiguration





CentOS 5.x + Redmine 2.x


이슈관리를 위하여 레드마인을 설치하려고 보니 2.x 가 최신이네요

최신버전을사용하려면 상위버전의 ruby가 필요하고 또 다른것도 좀 있어야 합니다. 

설치순서는 ruby > rubygems > rails > redmine 의 순서로 설치.




1. Download ruby source

wget http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz

tar -zxvf ruby-1.8.7.tar.gz


2. Install dependencies

sudo yum install gcc

sudo yum install gcc-c++

sudo yum install zlib-devel

sudo yum install openssl-devel

sudo yum install readline-devel

sudo yum install sqlite3-devel


3. Build ruby from source

cd ruby-1.8.7

./configure --with-openssl-dir=/usr/lib64/openssl

make

sudo make install


4. Download rubygems source

wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz

tar -zxvf rubygems-1.3.6.tgz

cd rubygems-1.3.6

sudo ruby setup.rb


5. Install gems

sudo gem install rake

sudo gem install rails

sudo gem install mysql2


6. Install Redmine 

아래 문서를 따라서 차근차근 진행합니다.

http://www.redmine.org/projects/redmine/wiki/RedmineInstall


트러블슈팅

1) bundle install --without development test 


>>> 오류 발생 rmagick, postgresql, sqlite 등을 사용하지 않아서 아래처럼 제거하고 설치

`bundle install --without development test rmagick`

`bundle install --without development test postgresql sqlite`


2) ruby 위치를 못찾아서 'ln -s /설치위치 /usr/bin/ruby' 로 링크해 줌


나머지는 매뉴얼대로 설치 진행.


standalon 구동방식) 서버를 재시작해도 레드마인이 구동되기 위한 Init script 적용

/etc/init.d/redmine 파일의 내용


#!/bin/bash
#
# chkconfig: - 16 84
# description: Start up Redmine
#
# processname: redmine
# config: /etc/sysconfig/redmine

# source function library
. /etc/rc.d/init.d/functions

# Get network config
. /etc/sysconfig/network

[ "${NETWORKING}" = "no" ] && exit 0

# Defaults
DAEMON_HOME=/usr/local/redmine
DAEMON_ARGS="-e production -d"

# Daemon
NAME=redmine
RUBY=$(which ruby)

APP_PIDFILE=$DAEMON_HOME/tmp/pids/server.pid
DAEMON_PIDFILE=/var/run/$NAME.pid
DAEMON_LOCKFILE=/var/lock/subsys/$NAME

start() {
    echo -n $"Starting ${NAME}: "
       
    cd $DAEMON_HOME
    #redmine 2.x 인경우
    $RUBY script/rails server webrick $DAEMON_ARGS
    #redmine 1.x 라면 아래의 구동스크립트 사용
    #$RUBY script/server webrick $DAEMON_ARGS

    sleep 2

    status -p $APP_PIDFILE &> /dev/null && echo_success || echo_failure
    RETVAL=$?

    if [ $RETVAL -eq 0 ]; then
        touch $DAEMON_LOCKFILE
        cat $APP_PIDFILE > $DAEMON_PIDFILE
    fi

    echo
}

stop() {
    echo -n $"Shutting down ${NAME}: "
   
    killproc -p $DAEMON_PIDFILE
    RETVAL=$?

    [ $RETVAL -eq 0 ] && /bin/rm -f $DAEMON_LOCKFILE $DAEMON_PIDFILE

    echo
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        stop
        start
    ;;
    status)
        status -p $DAEMON_PIDFILE $NAME
    ;;

    *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|status}" >&2
        exit 3
    ;;
esac


위의 redmine 파일을 /etc/init.d/ 디렉토리 안에 넣고 아래의 순서를 따른다.

chmod +x /etc/init.d/redmine
chkconfig --add redmine
chkconfig redmine on
/etc/init.d/redmine start



아파치 연동방식) 가상호스트로 구동시킬 때


passenger 설치하고 아파치 모듈설치


gem install passenger
passenger-install-apache2-module


/etc/httpd/conf.d/redmine.conf 파일추가 후 아파치 재 시작


LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.18
PassengerRuby /usr/bin/ruby

<VirtualHost *:80>
  ServerName redmine.abydos.co.kr
  # 레드마인이 설치된 디렉토리 안의 public 디렉토리를 지정

  DocumentRoot /opt/webRoot/redmine/public

  <Directory /opt/webRoot/redmine/public>

   # This relaxes Apache security settings.
   AllowOverride all
   # MultiViews must be turned off.
   Options -MultiViews
  </Directory>

   ErrorLog "|/usr/sbin/rotatelogs /etc/httpd/logs/redmine-error.%Y-%m-%d.log 86400"
   CustomLog "|/usr/sbin/rotatelogs /etc/httpd/logs/redmine-access.%Y-%m-%d.log 86400" "%h %l %u %t %D \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

</VirtualHost>


나눔고딕폰트로 변경)

나눔고딕으로 스타일 적용하려면

설치디렉토리안의 public/stylesheets/application.css 파일을 아래와 같이 수정


css 파일의 맨위에 아래 내용을 삽입하고

@import url('http://api.mobilis.co.kr/webfonts/css/?fontface=NanumGothicWeb');


원하는 부분에서 아래처럼 사용

font-family: 'NanumGothicWeb'


플러그인)

http://www.redmine.org/projects/redmine/wiki/Plugins



백업 및 복구, 데이터 이전)

다른 서버의 레드마인을 이전하거나, 장애에 대비하여 백업할때를 위하여 스크립트를 작성하고 cron으로 등록.


참고 : http://www.redmine.org/projects/redmine/wiki/HowTo_Migrate_Redmine_to_a_new_server_to_a_new_Redmine_version


고쳐서 사용중인 스크립트(git 대신 일자별로 백업되게 변경)

redmine_bak


crontab -l

0 2 * * * /root/redmine/redmine_bak


마이그레이션) 버전이 다른 레드마인을 업그레이드 하는 경우 아래의 과정 필수


http://www.redmine.org/projects/redmine/wiki/RedmineUpgrade

[root@localhost redmine]# rake generate_secret_token

[root@localhost redmine]# rake db:migrate RAILS_ENV=production

[root@localhost redmine]# rake redmine:plugins:migrate RAILS_ENV=production 

[root@localhost redmine]# rake tmp:cache:clear

[root@localhost redmine]# rake tmp:sessions:clear

[root@localhost redmine]# /etc/init.d/httpd restart


시작페이지를 위키로 바꾸고 싶을 경우)


설치된 디렉토리안의 app/controllers/welcome_controller.rb 파일을 수정

@news = News.latest User.current
@projects = Project.latest User.current

to

@news = News.latest User.current
@projects = Project.latest User.current 
redirect_to :controller => 'projects', :action => 'show', :id => '이동시킬프로젝트아이디/wiki'



+ Recent posts