티스토리 뷰

jacoco를 사용하여 소스코드에 대한 동적 분석을 한 결과물의 이름을 jacoco.exec로 사용하고 있다. 이 파일은 빌드서버인 jenkins가 설치된 곳으로 이동이 되어서 분석이 되어야 한다. jacoco의 분석은 sonarqube에서도 할수 있지만 jenkins에서 하기로 했다. 

 

jacoco.exec

대략적인 그림은 이렇다. 여러개의 application이 있고 여기에서 추출된 결과인 jacoco.exec 파일을 jenkins의 소스와 클래스파일이 위치한 곳에 전송하고 싶다. 이런식으로 jenkins가 파일을 받는 경우 이를 위한 여러가지 방법이 있다. 

제목은 이렇게 뽑았는데 실제로는 sshpass를 사용해서 파일을 전송하는 것 정도가 정확할것 같다. 

 

 

첫번째로는 SSH key를 이용을 하는 방법이다. 

이 방법의 장점은 password가 노출이 되지 않는 것이다. 

단점은 모든 application이 설치된 서버에 ssh key를 넣어줘야하는 점이다. 

 

두번째로는 sshpass 를 이용을 하는 방법이다. 

이 방법의 장점은 받는쪽(jenkins가 설치된 서버)에만 sshpass를 설치하면 다른곳에서 설정이 필요없다. 

단점은 password가 노출이 된다. 

 

 

필자는 개인적인 공간을 사용하는지라 sshpass를 이용하기로 결정하였다. 이를 사용해서 jacoco.exec 파일을 전송하는건 다음과 같이 하면 된다. 

 

$ yum install sshpass

생각보다 설치시간이 오래 걸린다. 설치 도중에 묻는 부분이 나오면 y를 누르면 설치가 완료가 된다.

 

$ sshpass -p '111서버비밀번호' scp -o StrictHostKeyChecking=no username@111.111.111.111:/jacoco추출되는경로/jacoco.exec ./jacoco수집할경로

설치가 완료되면 전송이 잘 되는지 위와 같이 확인을 한번 해본다. 지금은 파일을 받는 설정이라 위와 같이 하였고 보내는 것이라면 반대로 설정하면 된다. A application(111서버)에서 수집된 jacoco.exec 파일을 분석하기 위해 jenkins가 설치된 서버의 특정 경로로 scp 하는것이라고 보면 된다.

 

전송이 안된다면 111서버의 hosts.allow 파일에 목적지의 ip가 추가가 되었는지 확인을 해보자. 잘 모르겠으면 여기를 참조하자. 

 

 

jenkins에서는 위와 같이 Execute shell에 테스트해본것을 입력을 해주고 

 

Record JaCoCo coverage report 

이렇게 Record JaCoCo coverage report 를 통해 받아온 exec 파일을 설정해주면 된다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31