본문 바로가기
CI&CD/젠킨스

[Jenkins] 6장 - 소나큐브와 아티팩토리 설치 및 젠킨스와 연동하기

by 책 읽는 개발자_테드 2022. 3. 12.
반응형

목차

· 소나큐브와 아티팩토리 설치

· 아티팩토리 설치와 설정


· 소나큐브와 아티팩토리는 둘 다 오픈소스 도구이며, 각각 정적 코드 분석과 바이너리 파일의 버전 관리를 한다.

 

소나큐브와 아티팩토리 설치


· CI는 코드를 지속적으로 통합하는 것 이외에도,  코드 품질을 위해 코드의 인스펙션을 지속적으로 수행하는 역할을 한다. 지속적인 인스펙션은 품질이 낮은 코드를 발견하고 제거하는 역할을 한다. 소나큐브는 이같은 목적을 달성하는 데 도움을 준다.

- 이런 분석은 코드 분석 도구에 정의된 규칙에 기반한다.

ex) 코드에 에러가 없다면 다음 단계의 분석으로 넘어가고, 있다면 탈락한다.

- 코드 인스펙션(Code Inspection): 작성한 개발소스 코드를 분석하여 개발 표준에 위배되거나 잘못 작성된 부분을 수정하는 작업

 

· 소나큐브는 팀이 소스코드의 품질을 관리 추적 및 향상시켜 코드 품질을 관리하는 데 도움을 준다.

- 웹 기반 애플리케이션으로 설정 가능한 규칙, 알람, 기준을 갖고 있다.

- 7 종류의 코드 품질을 관리하는 파라미터(아키텍처 및 디자인 , 중복, 단위 테스트, 복잡성, 잠재적 버그, 코드 규칙, 주식)가 있다.

 

자바 설치

https://scshim.tistory.com/536

       

소나큐브 패키지 다운로드

1. /tmp 폴더로 이동한다.

2. 최신 LTS 버전의 소나큐브 설치 패키지를 확인한다. https://www.sonarqube.org/downloads/

 

3. 소나큐브 ZIP 패키지를 내려받는다.

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.7.52159.zip

 

4. 로그인 계정을 root가 아닌 계정으로 변경한다.

sudo useradd ted // root 계정 외에 계정이 없다면, 새로 만든다.
su ted

- 소나큐브 내부의 elasticsearch는 root 권한을 가진 계정으로 실행하면 다음과 같은 오류가 발생하기 때문에 변경해야한다.

"can not run elasticsearch as root"

 

4. /opt 폴더에 소나큐브 ZIP 패키지의 압축을 해체한다.

unzip sonarqube-8.9.7.52159.zip -d /opt/

 

소나큐브 애플리케이션 실행

1. /opt/sonarqube-8.9.7.52159/bin/linux-x86-64 폴더로 이동한다. 여기서는 리눅스 64비트 OS에서 소나큐브를 실행한다고 가정한다.

cd /opt/sonarqube-8.9.7.52159/bin/linux-x86-64

 

- bin 폴더에는 소나큐브를 설치하고 시작하는 스크립트가 들어있다.

- logs 폴더에는 소나큐브 로그가 있다.

 

2. sonar.sh 스크립트로 소나큐브를 실행한다.

./sonar.sh start

- 이 과정에서 권한 문제 등 여러 오류가 발생했다. 해당 디렉토리의 wrapper.log 파일에서 로그를 확인해 문제를 해결하자.

 

※ 터미널을 통해 위 방법을 사용하여 소나큐브를 실행하면, 터미널 세션이 끊길 시 소나큐브 또한 종료된다. 따라서 소나큐브를 서비스로 등록하여 사용하자. 

 

/etc/systemd/system/sonarqube.service 파일을 생성하고 다음과 같이 작성한다.

 

[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=simple
User=ted
Group=ted
PermissionsStartOnly=true
ExecStart=/usr/bin/nohup java -Xms32m -Xmx32m -jar /opt/sonarqube-8.9.7.52159/lib/sonar-application-8.9.7.52159.jar
StandardOutput=syslog
StandardError=syslog
LimitNOFILE=131072
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

- 위의 nohup 명령어는 리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊어지더라도 지속적으로 동작 할 수 있게 해주는 명령어다. 이것의 절대 경로는 다음 명령어로 확인할 수 있다.

type nohup

- user, Group은 소나큐브를 실행할 사용자 정보를 입력한다.

https://docs.sonarqube.org/latest/setup/operate-server/

 

ⓑ 설치한 소나큐브 디렉터리의 권한을 소나큐브를 실행할 사용자로 변경한다.

chown -R ted:ted /opt/sonarqube-8.9.7.52159

 

ⓒ 소나큐브를 실행한다.

sudo systemctl enable sonarqube.service
sudo systemctl start sonarqube.service

 

3. http://<IP-Address>:9000 링크를 통해 소나큐브에 접속한다.

 

기본 인증 정보 초기화와 토큰 생성

1. 처음 로그인 페이지에 접속하면 기본적으로 ID:admin, Password:admin 의 정보로 로그인할 수 있다.

2. 로그인 후 비밀번호 변경 페이지가 나오면, 기존 비밀번호(admin)를 원하는 비밀번호로 변경한다.

3. 소나큐브 대시보드에서 Administrator > My Account > Security 탭을 클릭한다.

 

4. 해당 페이지에 Token 영역을 보면 토큰을 생성하는 옵션이 있다. 젠킨스가 이 토큰을 이용해 소나큐브에 접근할 수 있다.

 

5. 토큰을 생성한다.

Generate Tokens 영역의 Generate 버튼을 클릭해 새로운 토큰의 이름을 입력한다.

ⓑ 새로운 토큰이 생성된다. 토큰을 복사한 후 저장한다. 이후에 이를 사용한다.

 

소나큐브에서 프로젝트 생성하기

· 정적 코드를 분석하기 위한 소나큐브 프로젝트를 생성한다.

1. 소나큐브 대시보드에서 Administration > projects > Management를 클릭한다.

 

2. 결과로 나온 페이지에서 Create Project 버튼을 클릭한 후  Name 영역에 이름을 추가하고, Key 영역에 키를 추가한 뒤 Create 버튼을 클릭해 프로젝트를 생성한다.

 

다음과 같이 프로젝트가 생성된 것을 확인할 수 있다.

 

소나큐브에 빌드 브레이커 플러그인 설치

· 빌드 브레이커 플러그인은 소나큐브를 위한 플러그인으로, 퀄리티 게이트 조건이 충족되지 않았을 때 젠킨스 같은 CI 시스템이 강제로 젠킨스 빌드를 실패시킬 수 있게 한다.

- 소나큐브 8.8 버전 부터 플러그인이 소나큐브에 빌트인되었다. 위에서 8.9.x 버전의 소나큐브를 설치했으므로 설치를 생략한다.

 

퀄리티 게이트 생성

· 퀄리티 게이트: 여러 조건을 포함한 규칙

- 빌드 브레이커 플러그인이 동작하려면 퀄리티 게이트를 만들어야 한다.

 

· 젠킨스파이프라인이 시작될 때, 퀄리티 프로파일과 퀄리티 게이트가 실행된다. 퀄리티 게이트가 성공적으로 통과되면 젠킨스 파이프라인은 계속해서 작업을 진행하고, 실패하면 젠킨스 파이프라인이 취소된다. 하지만 분석은 여전히 진행된다.

 

1. 소나큐브 대시보드 메뉴바에서 Quality Gates 링크를 클릭한다.

 

2. 왼쪽 상단 Create 버튼을 클릭하고, 생성된 팝업에서 퀄리티 게이트 이름을 정한 후 Create 버튼을 클릭한다.

 

3. 새로운 퀄리티 게이트가 생성되었고, 이제 Add Condition 메뉴를 클릭한다. 이렇게하면, 새로운 조건을 퀄리티 게이트에 추가할 수 있다.

 

4. 등장한 팝업에서 Quality Gate fails when으로 Major Issues를 선택하고, Value로 50을 선택한다.

 

이것은 메이저 이슈가 50보다 크다면, 실패한다는 의미다.

 

5. 앞서 생성한 예제 프로젝트가 지금 생성한 퀄리티 게이트를 사용하게 하자. Administration > projects > Managemnet를 클릭하여 페이지를 이동한 후, 기존에 생성한 프로젝트를 클릭한다.

 

6. 이동한 페이지에서 Project Settings > Quality Gate를 클릭한다.

 

7.  이동한 페이지에서 Always Use a specific Quality Gate에서 앞서 생성한 퀄리티 게이트를 선택한 후 저장한다.

- 이렇게하면, 프로젝트에 퀄리티 게이트가 연동된다.

 

기본 퀄리티 게이트 프로파일 

 

1. 소나큐브 대시보드의 메뉴바에서 Quality Profile 링크를 클릭한다. 이동한 화면에서 소나큐브에 있는 모든 퀄리티 프로파일을 볼 수 있다.

 

2. Java을 찾아 Rules 탭을 클릭한다. Java 코드에 적용할 수 있는 452개의 기본 퀄리티 게이트를 확인할 수 있다.

- 이는 추후 정적 코드 분석을 위해 사용할 수 있다.

 

 

젠킨스에 소나큐브 플러그인 설치

1. 젠킨스 대시보드에서 Jenkins 관리 -> 플러그인 관리 -> 설치가능 탭을 클릭한다.

 

2. SonarQube를 검색하고, SonarQube Scanner를 목록에서 선택한 후 Install without restart 버튼을 클릭한다.

 

젠킨스에 소나큐브 플러그인 설정

1. 젠킨스 대시보드에서 Jenkins 관리 -> 시스템 설정을 클릭한다.

2. 이동한 화면에서 SonarQube servers 영역을 찾고, Add SonarQube 버튼을 클릭한다.                                 

 

3. 다음과 같이 설정 가능한 여러 옵션이 나타난다.

- Name: 소나큐브 서버의 이름

- Server URL: 소나큐브 서버의 URL

 

설정을 완료했으면,  페이지 하단의 Save 버튼을 눌러 설정을 저장한다. 

 

아티팩토리 설치와 설정


· CI는 빈번하게 빌드와 패키징하는 과정을 수반한다. 따라서 버전 관리 시스템과 유사하게 모든 바이너리 코드(빌드, 패키지, 서드파티 플러그인 등)를 관리할 방법이 필요하다.

- GiT, SVN 같은 버전 관리 시스템은 바이너리 파일이 아닌 코드를 저장하기 때문에 바이너리 저장소 도구가 필요하다.

· 바이너리 저장소 도구 예: 아티팩토리, 넥서스

· 바이너리 저장소 도구와 젠킨스를 결합해 사용할 때 장점:

1. 빌드 추적 (누가 빌드를 시작하고 어떤 코드가 빌드됐는지)

2. 의존성

3. 배포 히스토리

 

· 아티팩터리는 CI 파이프라인에 의해 빌드된 결과물을 저장하는 데 널리 쓰이는 도구다. 아티팩토리를 통해 빌드된 결과물을 다양한 테스트 환경에 배포하고 코드의 승격 또한 아티팩토리에 의해 수행된다.

 

바이너리 저장소 도구가 젠킨스와 연동돼 빌드 아티팩트를 저장하는 과정

- 아티팩토리바이너리 버전을 관리하는 도구다. 바이너리에는 빌드된 코드, 패키지, 실행 파일, 메이븐 플러그인 등이 포함된다.

 

아티팩토리 설치

자바 설치

· 자바 8 버전을 설치한다. 

https://scshim.tistory.com/536

 

아티팩토리 패키지 다운로드

1. /tmp 폴더로 이동한다.

 

2. 다음 링크에서 오픈소스 아티팩토리를 다운로드할 수 있다.

https://releases.jfrog.io/artifactory/bintray-artifactory/org/artifactory/oss/jfrog-artifactory-oss/

 

아티팩토리 프로 버전을 다운로드하려면 다음 링크를 이용한다.

https://jfrog.bintray.com/artifactory-pro/org/artifactory/pro/jfrog-artifactory-pro/

 

여기서는 wget을 이용해 5.5.2(LTS) 버전의 아티팩토리 프로 ZIP 패키지를  다운로드 한다.

wget https://jfrog.bintray.com/artifactory-pro/org/artifactory/pro/jfrog-artifactory-pro/7.33.9/jfrog-artifactory-pro-7.33.9-linux.tar.gz

 

2. 아키팩토리 ZIP 패키지를 /opt 폴더 안에 압축 해제한다.

sudo unzip jfrog-artifactory-pro-5.5.2.zip -d /opt/

 

3. 압축을 해제한 폴더로 이동해 내용을 살펴본다.

cd /opt/artifactory-pro-5.5.2/
ls -lrt

- bin: 아티팩토리를 설치하고 시작하기 위한 모든 스크립트가 존재한다.

- logs: 아티팩토리 로그가 존재한다.

 

아티팩토리 애플리케이션 실행

· 아티팩토리 서버를 실행한다.

 

1. /opt/artifactory-pro-5.5.2/bin/ 폴더로 이동한 후 installService.sh 스크립트를 실행한다.

 

sudo ./installService.sh

 

2. 다음 명령어 중 하나를 이용해 아티팩토리 서비스를 실행한다.

sudo service artifactory start

 

기본 인증 정보 초기화 및 API 키 생성

1. http://Server IP Address:8081/로 이동해 아티팩토리 대시보드에 접속한다.

 

2. 관리자 초기 정보를 이용해 관리자로 로그인한다. 아티팩토리는 기본적으로 사용자명 admin, 암호 password로 설정된 관리자 계정이 있다. 

 

3. 30일 무료 평가판 라이센스를 받는다.

https://jfrog.com/platform/free-trial/

 

4. 아티팩토리 대시보드에서 라이센스 등록을 위한 배너의 click hear 버튼을 클린한다. 이동한 페이지에 위에서 받은 라이센스를 입력한다.

 

5. 아티팩토리 대시보드에서 welcome, admin > Edit Profile을 누른다.

 

6. 현재 암호를 Current Password 영역에 입력한 후 Unlock 버튼을 누른다.

7. 관리자 계정의 기본 인증을 초기화하기 위해 새 암호Change Password 영역에 입력한다.

 

8. Authentication Setting 영역에서 Generate Key(기어 모양)를 클릭해 새로운 API 키를 생성한다.

 

복사 버튼을 눌러 생성된 API 키를 복사한다.

이후 인증을 위해 이 API가 필요하다.

 

9. 완료되면 Save 버튼을 누른다.

 

아티팩토리 저장소 추가

· 아티팩토리 안에 generic 타입의 저장소를 추가한다.

- 해당 저장소는 빌드 아티팩트를 저장하기 위해 사용된다.

 

1. 아티팩토리 대시보드의 왼쪽 사이드 메뉴에서 Admin > Repositories > Local을 클릭한다.

 

2. 이동한 화면에는 사용 가능한 로컬 저장소를 볼 수 있다. 오른쪽 상단의 New 버튼을 클릭해 로컬 저장소를 생성한다.

 

3. 다양한 종류의 저장소가 팝업으로 나타난다. 이 중 Generic 타입을 선택한다.

 

4. Repository Key 영역에 저장소 이름을 설정한다.

그리고 Save & Finish 버튼을 클릭한다.

 

5. 다음과 같이 새로운 로컬 저장소를 확인할 수 있다.

 

젠킨스에 아티팩토리 인증 정보 추가

· 젠킨스에 아티팩토리 인증 정보를 추가해 둘을 연동시키자.

 

1. 젠킨스 대시보드에서 Credentials > System > Global credentials를 클릭한다.

 

2. 왼쪽 사이드 메뉴에서 Add Credentials 링크를 클릭해 새로운 인증 정보를 생성한다.

3. 이동한 화면에서 다음과 같이 설정한다.

Kind로 Username with Password를 선택한다.

Scope 영역은 기본값으로 둔다.

Username 영역에 아티팩토리 사용자명을 추가한다.

Password 영역에 암호를 추가한다.

ID 영역에 ID를 추가한 후, Descript 영역에 설명을 추가한다.

4. OK 버튼을 눌러 설정을 완료한다.

 

젠킨스에 아티팩토리 플러그인 설치

1. 젠킨스 대시보드에서 Jenkins 관리 > 플러그인 관리 > 설치 가능 탭을 누른다.

2. Artifactory를 검색하고, Artifactory Plugin을 목록에서 선택한 후 Install without restart 버튼을 누른다.

필요 시 젠킨스를 다시 시작한다.

 

아티팩토리 플러그인 설정

1. 젠킨스 대시보드에서 Jenkins 관리 > 시스템 설정을 클릭한다.

2. 이동한 화면에서 JFrog 영역(버전에 따라 Artifactory 영역)까지 스크롤을 내리고, Add JFrog Platform Instance 버튼을 클릭한다.

다음과 같이 설정해야 할 내용이 나타난다.

Instance ID에 아티팩토리 서버 이름을 작성하고, JFrog Platform URL 영역에 아티팩토리 서버 URL을 입력한다.

 

3. Default Deployer Credentials에 아티팩토리 인증 정보를 추가한다. 그리고 Test Connection 버튼을 클릭해 젠킨스와 아티팩토리 연결을 확인한다.

4. Save 버튼을 클릭해 설정을 저장한다.

 

 

반응형

댓글