Menjaga kualitas kode dalam setiap proyek adalah tantangan yang harus dihadapi oleh setiap developer. Sebagai seorang developer full stack yang dapat diandalkan, kita pasti memahami betapa pentingnya memastikan integritas dan keberlanjutan proyek.
Untuk itu, penggunaan alat analisis kode seperti SonarQube menjadi sangat penting. Namun, seringkali proses scanning dan configuring sonar-scanner
dapat menjadi hambatan bagi beberapa developer.
Selain itu, saya sering kali menemukan kendala bahwa code coverage dari tes yang dilakukan tidak langsung dimasukkan ke dalam laporan SonarQube. Hal ini dapat menyulitkan dalam memantau kualitas kode secara menyeluruh.
Nah, kali ini saya akan memperkenalkan sebuah solusi praktis yang dapat membantu kita dalam mengintegrasikan analisis kode yang kita buat ke SonarQube, dalam alur kerja proyek Laravel.
Perkenalkan, “Docker Image: Varian Laravel SonarScanner untuk Analisis Kode PHP”. Dengan memanfaatkan kekuatan Docker, kita dapat dengan mudah menjalankan analisis kode tanpa harus menginstal dan mengonfigurasi sonar-scanner
secara manual.
Table of contents
Open Table of contents
Fitur-fitur Unggulan
Docker Image ini memiliki beberapa fitur unggulan yang dapat membantu kita dalam meningkatkan kualitas kode PHP:
-
Berbasis pada Server Side Up PHP Docker Images
- Docker Image ini dibangun di atas base image serversideup/php, yang telah dioptimalkan untuk production-ready.
-
Menyertakan Ekstensi Penting
- Docker Image ini telah dilengkapi dengan ekstensi PHP yang penting, seperti
openswoole
danxdebug
, sehingga kita dapat langsung menggunakannya tanpa perlu mengonfigurasi lebih lanjut.
- Docker Image ini telah dilengkapi dengan ekstensi PHP yang penting, seperti
-
Terintegrasi dengan SonarScanner
- Selain menyiapkan lingkungan Laravel, Docker Image ini juga mengunduh dan menginstal SonarScanner CLI versi 5.0.1.3006, sehingga kita dapat langsung menjalankan analisis kode menggunakan perintah “sonar-scanner”.
-
Mudah Digunakan
- Cukup dengan menjalankan perintah satu baris pada alur kerja CI/CD kita, Docker Image ini akan mengatur segalanya, mulai dari konfigurasi Laravel, migrasi database, hingga eksekusi analisis kode SonarQube.
Contoh Penggunaan
Untuk menunjukkan bagaimana kita dapat memanfaatkan Docker Image ini, mari kita lihat contoh penggunaannya pada alur kerja GitHub Actions:
name: Quality Check
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
quality-check:
runs-on: ubuntu-latest
container:
image: ramageek/image:php8.3-laravel-sonar
steps:
- uses: actions/checkout@v2
- name: Setup application with code quality check
run: |
cp .env.example .env
touch database/database.sqlite
composer install --no-interaction --optimize-autoloader
php artisan key:gen
php artisan migrate --seed
composer qc
- name: Sonar scanning
run: |
cp sonar-project.properties.example sonar-project.properties
sonar-scanner -Dsonar.login=$SONAR_LOGIN_TOKEN
Pada contoh di atas, kita menggunakan tindakan GitHub Actions yang memanfaatkan Docker Image “ramageek/image:php8.3-laravel-sonar”. Tindakan ini akan menjalankan rangkaian tugas berikut:
- Checkout kode sumber.
- Menyalin file
.env.example
ke.env
. - Membuat file database SQLite.
- Menjalankan perintah Composer yang diperlukan, seperti install, key generation, migrasi, dan quality check.
- Menyalin file
sonar-project.properties.example
kesonar-project.properties
. - Menjalankan analisis kode menggunakan perintah
sonar-scanner
.
Semua ini dilakukan dalam konteks Docker, sehingga kita tidak perlu menginstal atau mengonfigurasi SonarScanner secara manual.
Contoh Penggunaan pada GitLab CI/CD
Jika menggunakan GitLab CI/CD, kita juga dapat memanfaatkan Docker Image ini dalam alur kerja CI/CD. Berikut adalah contoh penggunaannya:
stages:
- quality-check
quality-check:
stage: quality-check
image:
name: ramageek/image:php8.3-laravel-sonar
entrypoint: [""]
cache:
paths:
- .sonar/cache
script:
- cp .env.example .env
- touch database/database.sqlite
- composer install --no-interaction --optimize-autoloader
- php artisan key:gen
- php artisan migrate --seed
- composer qc
- cp sonar-project.properties.example sonar-project.properties
- sonar-scanner -Dsonar.login=$SONAR_LOGIN_TOKEN
only:
- main
Hasilnya, bisa kalian lihat gambar dibawah ini:
Mulai Meningkatkan Kualitas Kode Sekarang
Dengan Docker Image: Varian Laravel SonarScanner, kita dapat dengan mudah mengintegrasikan analisis kode SonarQube ke dalam alur kerja proyek Laravel. Tidak hanya itu, kita juga mendapatkan lingkungan pengembangan yang telah dioptimalkan, lengkap dengan ekstensi PHP yang penting.
Jadi, tunggu apa lagi? Segera manfaatkan Docker Image ini untuk meningkatkan kualitas kode PHP dan pastikan proyek kita tetap terjaga kesehatannya. Semoga artikel ini bermanfaat!
P.S. Dikarenakan ada masalah kompatibilitas dengan prosesor Apple Silicon, bagi pengguna Mac dengan prosesor keluarga M dapat menggunakan SonarScanner dari Homebrew.