Jenkins'te Spring Cloud Java Projesi için Pull Request Bazlı SonarQube Analizi Nasıl Yapılır?

Evet, SonarQube'u sadece yeni açılan Pull Request'ler için linting yapmak üzere ayarlamak mümkündür. Bu, özellikle legacy sistemlerde, mevcut kod tabanındaki büyük miktardaki hataları ve sorunları ele almadan yeni kod değişikliklerinin kalitesini kontrol etmek için oldukça faydalıdır. İşte bunu nasıl yapabileceğiniz:



1. SonarQube ve Jenkins Entegrasyonu

Öncelikle, SonarQube'un Jenkins ile düzgün bir şekilde entegre olduğundan emin olmanız gerekecek. Bunun için SonarQube Scanner'ı ve SonarQube Jenkins eklentisini kurmanız gerekiyor.

2. Pull Request Analizini Etkinleştirme

SonarQube, Pull Request'ler için özel olarak tasarlanmış bir analiz modu sunar. Bu modun çalışması için birkaç konfigürasyon gereklidir:

SonarQube Proje Ayarları

  1. SonarQube sunucunuzda projeyi oluşturun veya mevcut projeye gidin.
  2. Project Settings (Proje Ayarları) altında, Pull Request Decoration bölümünü bulun.
  3. Burada GitHub, Bitbucket, GitLab gibi kod barındırma servisleri için gerekli ayarları yapın.

Jenkins Pipeline Ayarları

Jenkins pipeline'ınıza, Pull Request analizini gerçekleştirecek gerekli adımları eklemeniz gerekecek.

Declarative Pipeline Örneği
groovy
pipeline { agent any environment { SONARQUBE_URL = 'http://your-sonarqube-server.com' SONARQUBE_TOKEN = 'your-sonarqube-token' } stages { stage('Checkout') { steps { checkout scm } } stage('SonarQube Analysis') { steps { withSonarQubeEnv('SonarQube') { script { def branchName = env.BRANCH_NAME def pullRequestKey = branchName.replaceAll(/[^\d]/, '') if (pullRequestKey) { sh """ sonar-scanner \ -Dsonar.projectKey=your_project_key \ -Dsonar.sources=. \ -Dsonar.host.url=${SONARQUBE_URL} \ -Dsonar.login=${SONARQUBE_TOKEN} \ -Dsonar.pullrequest.key=${pullRequestKey} \ -Dsonar.pullrequest.branch=${branchName} \ -Dsonar.pullrequest.base=main """ } else { echo "Not a Pull Request branch, skipping SonarQube analysis" } } } } } } post { always { script { // Add post-build actions like notifying the PR status } } } }

Açıklama

  • sonar.projectKey: SonarQube projenizin anahtarı.
  • sonar.sources: Analiz edilecek kaynak dosyaların yolu.
  • sonar.host.url: SonarQube sunucunuzun URL'si.
  • sonar.login: SonarQube tokenınız.
  • sonar.pullrequest.key: Pull Request anahtarı (genellikle PR numarası).
  • sonar.pullrequest.branch: PR'nin kaynak dalı.
  • sonar.pullrequest.base: PR'nin hedef dalı (örneğin main).

Bu yapılandırma ile sadece yeni açılan Pull Request'ler için linting yapabilirsiniz. Mevcut legacy kod tabanını analiz etmeyecektir, böylece sadece yeni değişiklikler üzerindeki kalite kontrolünü sağlayabilirsiniz.

SonarQube ve Jenkins'in doğru konfigüre edildiğinden ve gerekli izinlerin sağlandığından emin olun. Ayrıca, SonarQube'un Pull Request'leri süslemek için gerekli yetkilere sahip olduğundan emin olun. Bu adımlar, yeni kod değişikliklerinin kalitesini garanti altına alırken mevcut legacy kod tabanındaki sorunları ele almadan ilerlemenizi sağlar.

Please Select Embedded Mode To Show The Comment System.*

Daha yeni Daha eski

نموذج الاتصال