SonarQube merupakan tools untuk menganalisis kualitas dari code. Sonarqube dapat menganalisa 27 bahasa pemrograman seperti Java, C, PHP, Go dan lain sebagainya. Karena bisa langsung di integrasikan dengan git (github, gitlab) maka sangat memudahkan penggunaannya di CI/CD. Disini kita akan menginstall SonarQube 8.3 lebih tepatnya Version 8.3.1 (build 34397) di Debian 10. Ikuti langkah demi langkah berikut ini
Update System
sudo apt-get update sudo apt-get -y upgrade
Install tools yang dibutuhkan
sudo apt-get install wget unzip curl gnupg2 ca-certificates lsb-release -y
Install Java
apt install openjdk-11-jre -y
Install PostgreSQL
Tambahkan repository PostgreSQL
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list' wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
install PostgreSQL
sudo apt-get -y install postgresql postgresql-contrib
Aktifkan waktu boot dan jalankan postgresql
sudo systemctl enable postgresql sudo systemctl start postgresql
Ganti default password user postgres
sudo passwd postgres
Buat user dan database untuk SonarQube
su - postgres
buat user
create user sonar
untuk membuat password untuk user sonar tersebut, jalankan postgres shell (psql)
psql
jalankan
ALTER USER sonar WITH ENCRYPTED password '9WW3vWrwnCnX3mMf3VVL';
ganti 9WW3vWrwnCnX3mMf3VVL dengan password anda.
buat database sonar dengan pemilik user sonar.
CREATE DATABASE sonar OWNER sonar;
keluar dari psql dengan mengeksekusi quit
. Kembali ke user anda sebelumnya, bukan user postgres dengan mengeksekusi exit
.
Download SonarQube
Download file sonarcube dari website official SonarQube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.3.1.34397.zip
Ekstrak file sonarqube yang baru di download ke /opt
sudo unzip sonarqube-8.3.1.34397.zip -d /opt/
rename folder sonarqube-xxxx
menjadi /opt/sonarqube
mv /opt/sonarqube-8.3.1.34397/ /opt/sonarqube
Sesuaikan credential PostgreSQL di konfigurasi SonarQube, buka /opt/sonarqube-8.3.1.34397/conf/sonar.properties
ubah
#sonar.jdbc.username= #sonar.jdbc.password= #sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema
sesuaikan dengan credential yang dibuat diatas
sonar.jdbc.username=sonar sonar.jdbc.password=9WW3vWrwnCnX3mMf3VVL sonar.jdbc.url=jdbc:postgresql://localhost/sonar
Buat user SonarQube
Kita akan membuat user baru untuk menjalankan sonarqube, kalo dijalankan sebagai root nanti Elasticsearch akan komplain dengan error can not run elasticsearch as root.
Buat group baru
sudo groupadd sonar
Buat user sonar
sudo useradd -d /opt/sonarqube/ -g sonar sonar
Jalankan sonarqube
sudo -u sonar /opt/sonarqube/bin/linux-x86-64/sonar.sh start # untuk mendebug jalankan sudo -u sonar /opt/sonarqube/bin/linux-x86-64/sonar.sh console
Membuat Service Systemd
Buat file baru di /etc/systemd/system/sonar.service
yang berisi
[Unit] Description=SonarQube Service After=syslog.target network.target [Service] Type=forking ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop User=sonar Group=sonar Restart=always LimitNOFILE=65536 [Install] WantedBy=multi-user.target
Reload systemd manager
systemctl daemon-reload
Aktifkan daemon SonarQube waktu booting
systemctl enable sonar
Jalankan service SonarQube
systemctl enable sonar
Nginx Reverse Proxy
Untuk mengakses SonarQube kita akan menggunakan nginx sebagai reverse proxy, dengan menggunakan reverse proxy ini kita bisa mengakses SonarQube dari SSL.
Tambahkan repository Nginx
wget -qO - http://nginx.org/keys/nginx_signing.key | apt-key add - echo "deb http://nginx.org/packages/debian/ $(lsb_release -sc) nginx" >> /etc/apt/sources.list
Update repository
apt update
Install nginx
apt-get install nginx -y
Edit konfigurasi default nginx
server { listen 80; server_name sonarqube.jaranguda.com; proxy_buffers 16 64k; proxy_buffer_size 128k; location / { proxy_pass http://127.0.0.1:9000; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto http; } }
restart nginx
systemctl restart nginx
Sekarang buka SonarQube di http://ip-server atau http://nama-domain
Default login :
user : admin
password : admin
segera ganti password tersebut setelah anda login pertamakali di http://ip-server/account/security/
Log SonarQube
Log SonarQube baik SonarQube sendiri ataupun ElasticSearch berada di /opt/sonarqube/logs/