How To

  1. Buat file docker-compose.yml
services:
  sonarqube:
    image: sonarqube:latest
    container_name: sonarqube-ctr
    depends_on:
      - db
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonarqube
      SONAR_JDBC_USERNAME: sonaran
      SONAR_JDBC_PASSWORD: mentarimenyinaro
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
    ports:
      - "9000:9000"
    networks:
      - sonarnet

  db:
    image: postgres:13
    container_name: sonarqube-pgsql-ctr
    environment:
      POSTGRES_USER: sonaran
      POSTGRES_PASSWORD: mentarimenyinaro
      POSTGRES_DB: sonarqube
    volumes:
      - postgresql_data:/var/lib/postgresql/data
    networks:
      - sonarnet

volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  postgresql_data:

networks:
  sonarnet:
    driver: bridge
  1. Buka localhost:9000, default otentikasinya admin/admin

Integrasi dengan Github

  1. Untuk mendapatkan Github App ID & Client, masuk ke Github -> Developer Settings -> Github App , New Github App

  2. Untuk Homepage & Callback URL, masukan domain SonarQube

  3. Buat Private Keys, ini bakal dipakai nanti untuk setup di SonarQube

  4. Untuk permissionnya, bisa di cek di SonarQube Devops Integration Documentations

List SonarQube Permissions from Github

List SonarQube Permissions from Github

  1. Masuk ke SonarQube, pilih “Import from Github”. Masukan semua yang diperlukan sesuai dengan yang tadi sudah di buat

  2. Jika sudah, nanti kamu akan masuk ke halaman Github untuk integrasi dengan SonarQube.

  3. Pilih project/repo yang ingin diintegrasikan

SonarQube Github Integration Success

SonarQube Github Integration Success


Mencoba Analisis di Local

  1. Buat test-nya, kita akan coba analisa dengan menggunakan sonar-scanner-cli docker di local laptop

  2. Buat file sonar-project.properties isi dengan

# must be unique in a given SonarQube Server instance                                                                              
sonar.projectKey=nama_repo-Key-dari-sonar-qube
sonar.scm.disabled=true
  1. Gunakan docker run untuk menjalankan sonar-scanner-cli
docker run \
    --rm \
    -e SONAR_HOST_URL="https://  \
    -e SONAR_TOKEN="sqp_xxx" \
    -v "/home/username/sonar-project.properties:/opt/sonar-scanner/conf/sonar-scanner.properties" \
    -v "/home/username/project:/usr/src" \
    sonarsource/sonar-scanner-cli
SonarQube Analyze Result

SonarQube Analyze Result


Beberapa Error di Sonarqube

  1. bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low. Solusi, sudo sysctl -w vm.max_map_count=262144

  2. Tidak bisa akses web karena “maintenance” (di log ada Database needs to be migrated. Please refer to https://docs.sonarsource.com/sonarqube-community-build/server-upgrade-and-maintenance/upgrade/upgrade-the-server/roadmap. Ini bisa disebabkan karena kamu upgrade Sonarqube

#masuk ke sonarqube container
docker exec -it sonarqube-ctr bash 

#jalankan migrate
#for username:password use from SONAR_JDBC_USERNAME & SONAR_JDBC_PASSWORD
curl -u admin:admin -X POST "http://localhost:9000/api/system/migrate_db"

#cek status
curl -u admin:admin "http://localhost:9000/api/system/status"