버전관리 도구로 Git을 사용하는 경우,
코드 리뷰 도구로는 Gerrit을 사용하는 것이 거의 당연시 되고 있다.
그 가장 큰 이유는 바로 요즘 대세인 Google의 Android에서 사용하고 있다고 알려져있기 때문으로 보인다.


그래서 궁금한 것이 그러면 다른 곳에서는 어떤 코드 리뷰 도구를 사용하는지 알아보고 싶었다.
그러던 중 알게 된 것이 Yahoo에서 사용했다고 알려진 Review Board였다.
최근에는 Git도 지원을 하고 있었다.


그 외에도 몇 가지 도구를 더 찾을 수는 있었지만,
코드 리뷰를 개발 프로세스 안에서 시스템 적으로 코드 리뷰를 강제해야만 하는
회사에서 적용할 수 있는 강력하고 안정적인 쓸만한 리뷰 도구는 그다지 많지 않았다.


결론적으로,
일단 Review Board를 설치해보고 그 화면이나 기능에 대해서 한 번 살펴보기로 했다!
시간 투자 결정 !!!


01. Review Board

   - http://www.reviewboard.org/
   - Review Board는 Ubuntu와 Python을 사랑하는 도구로 보인다. 특히 Python !!!
   - 그래서 설치 과정 역시 일반적이지 않고 Python을 이용하여 이루어진다.


02. Database

   - Review Board는 다음의 3가지 database를 지원한다.
   - MySQL, PostgreSQL, sqlite

   - 개인적인 취향으로 PostgreSQL으로 이하 설치과정을 진행하겠다.
   - 다들 알겠지만, 설치는 다음과 같이 진행하면 된다.

$ sudo apt-get install postgresql



03. WAS

   - 웹 기반의 코드 리뷰 도구이기 때문에 WAS가 필요하다.
   - Review Board에서 공식적으로 지원하는 것은 다음의 2가지 WAS 구성이다.
      ▷ Apache + mod_wsgi, fastcgi, or mod_python
      ▷ lighttpd + fastcgi

   - 최근에는 lighttpd도 많이 사용되지만, Apache로 이하 설치과정을 진행하겠다.
   - 설치가 필요한 경우 아래와 같이 진행하면 된다.

$ sudo apt-get install apache2 libapache2-mod-python libapache2-mod-wsgi



04. Python Setuptools

   - Review Board는 조금 특이한 (솔직히 말하면 필자가 설치했던 것들 중 최초다 @.@) 설치과정을 갖고 있다.
   - 바로 Python Setuptools를 이용해서 설치를 진행하기에, 해당 도구를 미리 설치해줘야 한다.

$ sudo apt-get install python-setuptools



05. Python Development Headers

   - 정확히 왜 필요한지는 모르겠지만, 일단 필요하다고 하니 설치를 해보자.

$ sudo apt-get install python-dev



06. memcached

   - 웹 기반으로 구동이 되는 도구이다보니, 성능 이야기가 곧잘 나오곤 한다.
   - 그래서인지 옵션 사항이긴 하지만 Review Board는 성능 향상을 위한 도구를 제시하고 있다.

$ sudo apt-get install memcached
$ sudo easy_install python-memcached



07. Patch

   - Review를 위한 도구이다 보니, 필수로 필요한 것 중 하나가 patch이다.

$ sudo apt-get install patch



08. Review Board

   - 이제 준비는 모두 끝났다. Review Board를 설치하자~!!!

$ sudo easy_install ReviewBoard

   - 너무 쉽다고?! 아직 조금 더 남았다.



09. database bindings

   - review board와 database를 연결해줘야 한다.
   - 필자는 postgresql을 사용하기에 아래와 같이 설치~!!!

$ sudo apt-get install libpq-dev
$ sudo easy_install psycopg2



10. create site

   - 설치가 되었다고 해서 모두 끝나는 것이 아니다.
   - Review를 진행할 site를 생성해야 사용할 수가 있는 것이다.

   - 여기에서 사용할 사용자와 database를 등록해놓자.

$ sudo su - postgres
$ psql

# CREATE ROLE reviewboard LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity';
# CREATE DATABASE reviewboard WITH ENCODING='UTF8' OWNER=reviewboard;
# \q

$ exit

   - 이제 reviewboard site를 생성하자.

$ sudo rb-site install /var/www/review.whatwant.com

   - 위 경로는 현재 존재하지 않는 디렉토리이다. 위 명령어를 통해 생성이 될 예정이다.


   - 명령어를 실행하면 위와 같은 창이 X-Windows 에 뜨게 된다.


   - 지금 테스트하고 있는 환경에서는 별도의 도메인같은 것이 없으니 위 예시는 그냥 "127.0.0.1"을 사용하고 있다.


   - 하위 경로를 별도로 지정하고 싶은 경우를 위한 환경 설정이다.


   - 무슨 말인지 잘 모르겠다. 이럴 때엔 그냥 내버려두란다. 그러면 그렇게 하자 ^^


   - 마찬가지다. 그냥 내버려두란다.


   - 설치하고 사용할 Database를 고르면 된다. 필자는 postgresql을 선택했다.


   - postgresql에서 사용할 database 이름을 지어주면 되는데, 앞에서 생성한 reviewboard라는 이름으로 생성하자.


   - DB 서버를 별도로 두었다면 해당 IP를 적어주면 되고, 같은 서버에 위치하고 있다면 기본값 localhost 그대로 쓰자.


   - database를 위한 사용자와 비밀번호 입력을 위한 화면이다. 앞에서 등록한 사용자 정보를 넣어주면 된다.


   - 메모리 캐쉬를 위해서 어떤 방법을 사용할지에 대한 것인데, ReviewBoard에서 요구하는 방식을 그대로 써보자.


   - memcache 서버에 대한 설정인데, 왠만하면 그냥 그대로 쓰자.


   - 사용할 웹서버를 고르는 것인데, 우리는 이번에 apache를 사용하기로 했으므로 그렇게 선택하면 된다.


   - 웹서버에서 Python을 사용하기 위한 Loader를 고르는 것인데, 기본 추천값으로 사용하자.


   - 이번에 생성한 ReviewBoard의 site에서 사용할 관리자의 계정을 등록하면 된다.


   - 설치가 위와같이 진행이 된다.


   - 모두 끝났다.



11. Apache 설정

   - 위에서 필자와 같이 설정을 했으면 아래와 같이 진행을 해보자.

$ nano /var/www/review.whatwant.com/conf/apache-wsgi.conf

   - 위와 같이 ReviewBoard가 참고할 환경 설정 파일을 만들어 놓았다.

<VirtualHost *:80>
        ServerName 127.0.0.1
        DocumentRoot "/var/www/review.whatwant.com/htdocs"

        # Error handlers
        ErrorDocument 500 /errordocs/500.html

        WSGIPassAuthorization On
        WSGIScriptAlias "/" "/var/www/review.whatwant.com/htdocs/reviewboard.wsgi/"

        <Directory "/var/www/review.whatwant.com/htdocs">
                AllowOverride All
                Options -Indexes +FollowSymLinks
                Allow from all
        </Directory>

        # Prevent the server from processing or allowing the rendering of
        # certain file types.
        <Location "/media/uploaded">
                SetHandler None
                Options None

                AddType text/plain .html .htm .shtml .php .php3 .php4 .php5 .phps .asp
                AddType text/plain .pl .py .fcgi .cgi .phtml .phtm .pht .jsp .sh .rb

                <IfModule mod_php5.c>
                        php_flag engine off
                </IfModule>
        </Location>

        # Alias static media requests to filesystem
        Alias /media "/var/www/review.whatwant.com/htdocs/media"
        Alias /static "/var/www/review.whatwant.com/htdocs/static"
        Alias /errordocs "/var/www/review.whatwant.com/htdocs/errordocs"
        Alias /favicon.ico "/var/www/review.whatwant.com/htdocs/static/rb/images/favicon.png"
</VirtualHost>

   - 위와같이 친절하게 필요한 설정을 모두 제공을 해준다.
   - 필자는 위의 내용을 참고해서 그대로 이용하고자 한다. 포트만 변경해서... ^^

$ sudo nano /etc/apache2/sites-available/default

...
<VirtualHost *:8080>
위의 내용
</VirtualHost>

   - 포트를 추가하기 위해서는 다음의 작업도 수행해주어야 한다.

$ sudo nano /etc/apache2/ports.conf

...
NameVirtualHost *:8080
Listen 8080

   - 이제 apache2 재시작을 하자.

$ sudo service apache2 restart

   - 위와 같이 했는데, 다음과 같은 에러메시지가 보인다면, 다음의 포스트를 참고하자.
   - http://whatwant.tistory.com/440

$ sudo service apache2 restart
 * Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

 

12. 디렉토리 권한 설정

   - 몇 개의 디렉토리에 대해서는 권한을 부여해주어야 한다.

$ sudo chown -R www-data /var/www/review.whatwant.com/data
$ sudo chown -R www-data /var/www/review.whatwant.com/htdocs/media/ext



13. 설치 확인

   - 이제 잘 설치 되었는지 확인을 해보자.

   - 웹브라우저를 통해 [ http://localhost:8080 ]으로 접속을 하면 된다.


   - 로그인 화면이 떴다!!!!
   - 설치과정에서 입력한 계정으로 로그인을 하면 된다.



설치과정이 너무 길었으니... 사용을 위한 부분은 다른 포스팅으로 설명을 하기로 하겠다.
(실제로 포스팅을 위해서는 약 3일이 걸렸다... 몇 가지 확인을 위해서 이기도 하고, 개인적인 일도 있다보니 ^^)

반응형

1. JDK install

   - http://www.oracle.com/technetwork/java/javase/downloads/index.html


   - 최신 버전을 받아서 사용하면 좋겠지만, 안드로이드 작업을 위해서는 이전 버전이 필요하다.

 $ wget http://download.oracle.com/otn-pub/java/jdk/6u29-b11/jdk-6u29-linux-i586.bin
 $ chmod +x ./jdk-6u29-linux-i586.bin
 $ sudo ./jdk-6u29-linux-i586.bin

 $ sudo update-alternatives --install /usr/bin/java java /srv/install/jdk/jdk1.6.0_29/bin/java 1
 $ sudo update-alternatives --install /usr/bin/javac javac /srv/install/jdk/jdk1.6.0_29/bin/javac 1
 $ sudo update-alternatives --install /usr/bin/javah javah /srv/install/jdk/jdk1.6.0_29/bin/javah 1
 $ sudo update-alternatives --install /usr/bin/jar jar /srv/install/jdk/jdk1.6.0_29/bin/jar 1



2. eclipse install

   - http://www.eclipse.org/


   - 이클립스 파일을 다운 받아서, 압축을 해제하면 설치 끝!

 $ wget http://ftp.daum.net/eclipse/technology/epp/downloads/release/indigo/SR1/eclipse-java-indigo-SR1-linux-gtk.tar.gz
 $ tar zxvf ./eclipse-java-indigo-SR1-linux-gtk.tar.gz

   - 아래와 같이 경고가 발생할 수도 있다.

 (eclipse:1859): Gtk-WARNING **: 모듈을 module_path에서 찾을 수 없습니다: "pixmap",

   - 다음과 같이 패키지를 추가 설치하면 해결이 된다.

 $ sudo apt-get install gtk2-engines-pixbuf




3. android SDK

   - http://developer.android.com/sdk/index.html


 $ wget http://dl.google.com/android/android-sdk_r15-linux.tgz
 $ tar zxvf ./android-sdk-r15-linux.tgz
 $ nano ~/.bashrc
...
export ANDROID_PATH=/srv/install/android/android-sdk-linux
export PATH=$PATH:$ANDROID_PATH/tools
 $ source ~/.bashrc



4. Install ADT Plugin

   - Eclipse에서 개발하기 위해 ADT Plugin 설치 !!


   - Eclipse 실행 → [Help] → [Install New Software...]



   - [Add...]


   - Name : ( Android )
   - Location : ( https://dl-ssl.google.com/android/eclipse/ )


   - [Select All] → [Next>]


   - [Next>]


   - 'I accept the terms of the license agreements' → [Finish]


   - Installing...


   - [Restart Now]


 
5. Choose Packages to install


   - 사용할 Packages들을 다운로드 받아야 한다.

 $ cd /srv/install/android/android-sdk-linux
 $ ./tools/android update sdk

   - execute


   - "Accept All" → [Install]


   - Installing...



안드로이드 App 개발 준비 완료~!!
반응형

'잘난놈되기 > 안또라이들' 카테고리의 다른 글

버튼을 더 추가해보기  (0) 2012.03.11
버튼을 추가해보기  (0) 2012.03.06
첫 소스 분석 - HelloAndroid  (0) 2012.03.05
여보세요!? 안또라이들!!!  (0) 2012.02.28
Android Emulator 실행  (2) 2011.12.11

+ Recent posts