버전관리 도구로 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일이 걸렸다... 몇 가지 확인을 위해서 이기도 하고, 개인적인 일도 있다보니 ^^)