How to Install SonarQube
DevSecOps series #3 | Add your code review tool
Artikel ini merupakan kelanjutan dari artikel sebelumnya mengenai instalasi jenkins , sehingga jika ingin mengetahui terlebih dahulu terkait instalasi jenkins dapat melihat pada artikel Instalasi Jenkins. Pada artikel ini kami akan mencoba untuk melakukan instalasi SonarQube on-premise server, dan environment ini akan digunakan pada artikel selanjutnya mengenai cara mengkombinasikan antara jenkins dan SonarQube.
SonarQube
Sonarqube merupakan tools yang digunakan untuk melakukan code review dan unit testing secara otomatis, seperti yang dikutip pada dokumentasi resminya.
“SonarQube is an automatic code review tool to detect bugs, vulnerabilities, and code smells in your code. It can integrate with your existing workflow to enable continuous code inspection across your project branches and pull requests.”
Kita dapat mengombinasikan sonarqube dengan tools lain untuk menjalankan proses testing secara otomatis dalam proses CICD pipeline. Salah satu kombinasi nya yaitu integrasi antara jenkins dengan sonarqube.
Pada instalasi ini akan menggunakan satu buah server sendiri dengan minimal os Ubuntu 20.04. Berikut adalah topologi yang akan digunakan :
Langkah Instalasi
Instalasi Java & PostgreSQL
1. Install java runtime engine
$ sudo apt install default-jre -y
2. Install PostgreSQL
$ sudo apt install –y postgresql postgresql-contrib$ sudo su — postgres
3. Masuk ke postgres dan buat database untuk sonarqube
## Membuat user pada postgresql untuk sonar
$ psqlpsql=> CREATE USER sonaruser WITH ENCRYPTED PASSWORD ‘password’;
psql=> CREATE DATABASE sonardb;
psql=> GRANT ALL PRIVILEGES ON DATABASE sonardb TO sonaruser;
psql=> \q## Membuat table schema untuk sonarqube$ psql -U sonaruser -W -h localhost -d sonardb
psql=> CREATE SCHEMA sonarschema;
psql=> ALTER USER sonaruser SET search_path to sonarschema;
Instal SonarQube Server
1. Konfigurasi OS untuk SonarQubevm.max_map_count
is greater than or equal to 524288
fs.file-max
is greater than or equal to 131072
$ sysctl -w vm.max_map_count=530288$ sysctl -w fs.file-max=131072
Menambakan limit file description & threads ketika user membaca file sonarqube
$ ulimit -n 140072$ ulimit -u 16384
Setiap konfigurasi di simpan pada file tertentu
$ echo 'vm.max_map_count=530288' >> /etc/sysctl.conf$ echo 'fs.file-max=131072' >> /etc/sysctl.conf$ echo 'sonarqube - nofile 140072' >> /etc/security/limits.d/99-sonarqube.conf$ echo 'sonarqube - nproc 16384' >> /etc/security/limits.d/99-sonarqube.conf
2. Donwload SonarQube
## Download sonarqube from http://www.sonarqube.org/downloads/$ curl –O https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.9.56886.zip## Unzip kepada target folder$ unzip ~/sonarqube-8.9.9.56886.zip -d /home/sonarqube/sonarqube-8.9.9
3. Tambahkan user dan folder untuk instalasi sonarqube
$ adduser sonarqube$ chown -R sonarqube:sonarqube /home/sonarqube/sonarqube-8.9.9
4. Setting akses sonar ke database dan beberapa konfigurasi lain
Buat beberapa direktori untuk data sonarqube
$ mkdir -p /var/sonarqube/data$ mkdir -p /var/sonarqube/temp$ chown -R sonarqube:sonarqube /var/sonarqube/
Masuk sebagai user sonarqube dan edit file konfigurasi
$ su - sonarqube$ cd sonarqube-8.9.9$ vim conf/sonar.properties...sonar.jdbc.username=sonarusersonar.jdbc.password=passwordsonar.jdbc.url=jdbc:postgresql://localhost/sonardbsonar.path.data=/var/sonarqube/datasonar.path.temp=/var/sonarqube/tempsonar.web.host=<your ip addres>sonar.web.port=9000sonar.web.context=/sonarqube...
5. Menjalankan SonarQube sebagai Systemd
Masuk sebagai root user
$ su -
Tambahkan beberapa line konfigurasi tersebut dalam file /etc/systemd/system/sonarqube.service
$ vim /etc/systemd/system/sonarqube.service...[Unit]Description=SonarQube serviceAfter=syslog.target network.target[Service]Type=simpleUser=sonarqubeGroup=sonarqube#PermissionsStartOnly=trueExecStart=bash /home/sonarqube/sonarqube-8.9.9/bin/linux-x86-64/sonar.sh consoleExecStop=bash /home/sonarqube/sonarqube-8.9.9/bin/linux-x86-64/sonar.sh stopStandardOutput=syslogLimitNOFILE=140072LimitNPROC=16384TimeoutStartSec=5Restart=alwaysSuccessExitStatus=143[Install]WantedBy=multi-user.target...
Reload dan start sonarqube sebagai systemd
systemctl daemon-reloadsystemctl start sonarqube.servicesystemctl status sonarqube.service
Check hasil instalasi
Akses sonarqube dashboard dengan menggunakan url http://sonaqurbe-server:9000/sonarqube, yang perlu di perhatikan ip addres yang digunakan adalah ip addres yang digunakan ketika melakukan edit konfigurasi pada file conf/sonar.properties, kemudian tambahkan “/sonarqube” karena kita juga telah menambahkan context pada konfigurasi sebelumnya. Jika instalasi berhasil kita akan diarahkan ke halaman login dengan url tersebut.
Masuk dengan default username password yaitu admin:admin
Setelah masuk diarahkan untuk mengganti default password
Penutup
Berikut adalah langkah instalasi SonarQube server, nantinya environment ini akan digunakan pada artikel selanjutnya untuk integrasi dengan jenkins. Nantikan pada artikel selanjutnya. Stay tune….
Our Tagline
# Together is Better & Continuous Learning
Author :
Muhammad Fauzan Rafi, Staff of Research Btech
Based on Documentation from :
Razzaaq Arditian, Staff of Research Btech