SonarQube
정적 코드 분석 도구
실제 실행 없이 컴퓨터 소프트웨어를 분석
sudo ufw allow ssh >> 방화벽 설정
>> 간편설치
docker pull sonarqube
docker run -d -p 8082:9000 --name sonarqube sonarqube
>> Docker-compose를 이용하여 postgresql와 같이 설치
더보기
1.Docker-compose 설치
아래 명령어로 docker-compose를 설치한다.
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#확인
docker-compose --version
2. docker-compose.yml 설정
docker-compose는 yml 파일 형식을 기반으로 구동된다.
아래와 같이 docker-compose.yml 파일을 작성한다.
version: "2"
services:
sonarqube:
image: sonarqube:lts
container_name: sonarqube
ports:
- "8082:9000"
ulimits:
nofile:
soft: "262144"
hard: "262144"
networks:
- sonarnet
environment:
- sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
db:
image: postgres
container_name: postgres_sonar
ports:
- "5432:5432"
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- postgresql:/var/lib/postgresql
- postgresql_data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_logs:
postgresql:
postgresql_data:
3. 실행
docker-compose up -d
9000포트로 하니까 아무리 실행해도 안되던 것이 다른 포트로 하니까 됐다.... ㅠㅠㅠㅠㅠㅠㅠㅠㅠ 내 4시간....
SonarQube 토큰 생성
SonarQube 프로젝트 생성
token은 위에서 생성한 토큰을 적어준다
Jenkins 설정
Sonarqube 플러그인 설치 후
시스템 설정
add 눌러서 계정 추가할 때 위와 같은 방식으로 하면됨
Global Tool Configuration
새로운 ITEM > Pipeline으로 새로 만들어서
젠킨스 CI/CD 할 때 Webhook 설정하는것처럼 토큰 발급받고 Webhook 설정한 후
처럼 설정해준다.
git repository에는 2가지를 해줘야 하는데 아래 2개를 추가해준다.
Jenkinsfile
node {
stage('SCM') {
checkout scm
}
stage('SonarQube Analysis') {
dir('BackEnd/SOA') {
withSonarQubeEnv() {
sh "pwd"
sh "chmod +x gradlew"
sh "./gradlew sonar"
}
}
}
}
build.gradle
plugins {
id "org.sonarqube" version "4.0.0.2929"
}
sonar {
properties {
property "sonar.host.url", "http://"
property "sonar.projectKey", ""
property "sonar.projectName", ""
}
}
key는 sonarqube에서 받은 key, name은 sonarqube 프로젝트 이름
성공! 이제 열심히 고쳐보자..
'DevOps' 카테고리의 다른 글
[Vector] Logstash 대체안 Vector (0) | 2024.04.19 |
---|---|
[Grafana] Customizing Grafana Alerting Notification Templates (0) | 2024.03.08 |
[Jenkins] Jenkins로 SpringBoot/Django/React 배포하기 (ver.2) (1) | 2023.03.22 |
[AWS] EC2 인스턴스(Ubuntu)에서 Docker 설치 (1) | 2023.03.13 |
[Jenkins] Jenkins로 nginx + react 빌드 및 배포하기 (1) | 2023.02.03 |