전산쟁이의 카피질

뒤로 검색

Ubuntu + Marven + Sonar + MySQL + Jenkins 로 협업환경 구축

2014/02/14 13:59

Sonar 설치 + Jenkins 연동(2013/06/09) : http://www.sjune.net/archives/1577 

지속적인 소스코드 품질 관리에 필요한 오픈 소스 플랫폼 Sonar를 설치해보고, Sonar를 Jenkins와 연동하여 Maven 프로젝트를 분석해본다. 설치 테스트 환경은 아래와 같다.

  • ubuntu v12.04 LTS
  • maven v3.0.4
  • jenkins v1.517
  • mysql v5.5.31
  • sonar v3.5.1

1. Sonar 설치

직접 소스를 다운로드 받아 설치해도 되지만 본 글에서는 우분투의 apt-get 명령어를 이용하여 설치한다.
Sonar 패키지는 기본적으로 데비안 저장소에 포함되어있지 않으므로 /etc/apt/sources.list 파일에 아래 내용을 추가한다.

$ sudo vi /etc/apt/sources.list
deb http://downloads.sourceforge.net/project/sonar-pkg/deb binary/


그리고 apt-get을 이용하여 sonar 패키지를 설치한다.

 
$ sudo apt-get update
$ sudo apt-get install sonar

/opt/sonar 경로에 설치되며 init.d에도 등록된다. sonar 를 구동한다.

 
$ sudo service sonar start

http://localhost:9000 에 접근해서 sonar 서버가 구동하는지 확인한다. 설치 후 기본 계정 정보는 admin/admin 이다.

sonar

2. MySQL 연동

Sonar을 사용하기 위한 mysql 설정을 한다. database를 생성하고 사용자 권한을 부여한다.

 
CREATE DATABASE sonar DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES on  sonar.*  to 'sonar'@'localhost' IDENTIFIED BY 'sonar' WITH GRANT OPTION;
flush privileges;

다음은 sonar.properties 에서 sonar 호스트 서버 정보와 mysql접속에 필요한 정보를 수정한다.

 
$ sudo vi /opt/sonar/conf/sonar.properties

아래 내용처럼 Mysql연동에 필요한 주석을 해제하거나 추가한다.

 
# Listen host/port and context path (for example / or /sonar). Default values are 0.0.0.0:9000/.
sonar.web.host:                           0.0.0.0
sonar.web.port:                           9000
sonar.web.context:                        /
 
 
# Permissions to create tables and indexes must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username:                       sonar
sonar.jdbc.password:                       sonar
 
 
#----- MySQL 5.x
# Comment the embedded database and uncomment the following line to use MySQL
 
# Optional properties
sonar.jdbc.driverClassName:                com.mysql.jdbc.Driver
sonar.jdbc.validationQuery:                select 1


저장 후 sonar 데몬을 재시작한다. 재시작하면 Started sonar.라고 출력되지만 초기화 작업 때문에 sonar 서버에 바로 접근이 안될 수 있다. 진행 상황을 확인하려면 tail -f 로 로그를 살펴본다.

 
$ sudo service sonar restart
Stopping sonar...
Stopped sonar.
Starting sonar...
Started sonar.
 
$ tail –f /opt/sonar/logs/sonar.log
STATUS | wrapper  | 2013/06/04 10:34:18 | --> Wrapper Started as Daemon
STATUS | wrapper  | 2013/06/04 10:34:18 | Launching a JVM...
INFO   | jvm 1    | 2013/06/04 10:34:19 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO   | jvm 1    | 2013/06/04 10:34:19 |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
INFO   | jvm 1    | 2013/06/04 10:34:19 |

Sonar가 정상적으로 구동된 후, mysql에서 테이블을 조회해보면 데이터가 입력된 것을 알 수 있다.

 
$ mysql -usonar –Dsonar -p
 
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 58
Server version: 5.5.29-0ubuntu0.12.04.2 (Ubuntu)
 
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> show tables;
+---------------------------+
| Tables_in_sonar           |
+---------------------------+
| action_plans              |
| action_plans_reviews      |
| active_dashboards         |
| widgets                   |
+---------------------------+
49 rows in set (0.01 sec)

3. Maven 설정

메이븐 프로젝트를 sonar로 분석하기 위해 환경 설정을 한다.
환경 설정 파일인 ${MAVEN_HOME}/conf/settings.xml 을 열어 아래처럼 profile 정보를 입력한다.

 
<profile>
    <id>sonar</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <sonar.jdbc.url>
        </sonar.jdbc.url>
        <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
        <sonar.jdbc.username>sonar</sonar.jdbc.username>
        <sonar.jdbc.password>sonar</sonar.jdbc.password>
        <sonar.host.url>http://localhost:9000</sonar.host.url>
    </properties>
</profile>

4. Jenkins 연동

이제 Sonar와 jenkins를 연동해본다.

1) Jenkins 관리 > 플러그인 관리에서 Sonar 플러그인을 설치한다.
sonar-jenkin1

2) Jenkins 관리 > 시스템 설정에서 Sonar를 추가한다. 설치 정보는 sonar.properties 파일을 참고해서 작성하면 된다.
sonar-jenkins2

3) 다음은 Jenkins Job에 Sonar를 trigger로 걸어준다.
Maven 프로젝트 > 설정 > Post-build Actions에서 sonar를 추가하고 아래처럼 설정한다.

sonar-jenkins3

4) 모든 설정이 완료 되었다. 마지막으로 해당 프로젝트에 가서 Build now를 해본다.
sonar-jenkis4

Build에 성공하면 sonar 서버에 해당 프로젝트가 분석되어 있는 것을 확인할 수 있다.
sonar-result


Reference

소나 소개 : http://www.swbank.kr/html/tools/toolsFile/Sonar_05_functionIntro.pdf

허드슨 + 소나 연동 : http://blog.naver.com/PostView.nhn?blogId=stonedragony&logNo=50101740211

[프로세스/관리]코드품질관리를 위한 젠킨스+Sonar 연동과 유닛테스트결과 리포팅 : http://bluepoet.me/2013/06/21/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EA%B4%80%EB%A6%AC%EC%BD%94%EB%93%9C%ED%92%88%EC%A7%88%EA%B4%80%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%A0%A0%ED%82%A8%EC%8A%A4sonar-%EC%97%B0%EB%8F%99/

Tags

Ant Task, CheckStyle, Cobertura, Code coverage, Coding standards, Comment, Complex code, Design and Architecture, Duplicate code, FindBugs, hudson, JAVA, jdbc, Jenkins, marven, Maven, MySQL, PMD, Potential bugs, Quality Management, sonar, Sonar runner, SQL, Surefire, ubuntu, 개발환경 구축, 리포팅, 마븐, 마이에스큐엘, 소나, 소나 클라이언트, 소스코드의표준준수분석, 연동, 우분투, 유닛테스트, 자바, 정적분석, 젠킨스, 코드, 코드품질, 코딩스타일체크, 테스트 커버리지 체크, 표준준수분석, 품질관리, 프로세스 관리, 프로젝트, 허드슨, 협업, 협업환경 구축, 환경구축
이 페이지는 Textcube 1.10.0 : beta 1 로 구동됩니다 데스크탑 화면