SonarQube Overview of Integration with Jenkins

Kadaie KyiphyuKadaie Kyiphyu
2 min read
💡
CI/CD Tools တွေကို အခုမှ စလေ့လာနေတဲ့ သူတွေအတွက် အထောက်အကူ ဖြစ်စေဖို့ရည်ရွယ်ပါတယ်။ 😊

DevOps နယ်ပယ်ထဲ မှာ SonarQube Scanner ဆိုပြီး ကြားဖူးသိဖူး Experience ရှိဖူးကြပါလိမ့်မယ် ထင်ပါတယ်။ ဒီ post ကတော့ SonarQube ကိုအခုမှ စပြီး မြည်းစမ်းကြည့်ချင်တဲ့သူတွေအတွက် ရည်ရွယ်ပါတယ်။ SonarQube ဆိုတာဘာလဲ နည်းနည်း Explore လုပ်ကြည့် ကြရအောင်။

SonarQube ဆိုတာကတော့ အမျိုးမျိုးသော Programming language တွေနဲ့ ရေးထားတဲ့ Applications source code တွေရဲ့ bugs တွေ code smells နဲ့ security vulnerabilities အစရှိသဖြင့် code quality ကို အဓိကစစ်ထုတ်ပေးနိုင်တဲ့ open-source platform တစ်ခုလို့လည်းဆိုနိုင်ပါတယ်။ သူ့ကိုတော့ Sonar Source ဆိုတဲ့ Software company တစ်ခုကနေ developed လုပ်ခဲ့တာပါ။ အလွယ်မှတ်ရရင်တော့ Source Code Analysis Tool တစ်ခုလို့မှတ်ယူနိုင်ပါတယ်။DevSecOps CI/CD Pipeline တွေမှာ အများဆုံးတွေ့ရတတ်ပါတယ်။

SonarQube ကို သဘောကျတဲ့အချက်ကတော့ များစွာသော CI/CD Tools တွေနဲ့ pipeline ထဲမှာ integrate လုပ်ပြီးအသုံးပြုနိုင်ပါတယ်။ (ဥပမာ Jenkins, GitLab CI, Azure DevOps အစရှိသဖြင့်)

SonarQube ကို Jenkins CI/CD pipeline ထဲမှာ Integrate လုပ်ပြီးသုံးမယ်ဆိုရင်တော့ အပိုင်းသုံးပိုင်းခွဲပြီးလေ့လာကြည့်နိုင်ပါတယ်။

  • SonarQube Server

  • Sonar Scanner

  • Quality Gate

Integrate လုပ်တဲ့ steps တွေ ဆီကို အရင်မသွားခင် SonarQube Server ၊ Sonar Scanner နဲ့ Quality Gate တို့ရဲ့ flow လေးကို နည်းနည်း ကြည့်ကြရအောင်ပါ။ ပုံမှာပြထားတဲ့အတိုင်း ဆိုရင်တော့ Jenkins pipeline ကိုအသုံးပြုထားပါတယ်။

Jenkins pipeline စ run ပြီးတော့ နံပါတ် ၂ အဆင့်မှာ integrate လုပ်ထားတဲ့ Sonar Scanner ကနေ Code တွေကို Scan စဖတ်ပါတယ်။ (Sonar Scanner tools ကို Jenkins မှာ install လုပ်ပေးဖို့လိုပါမယ်။)

ပြီးရင်တော့ နံပါတ် ၃ အဆင့်မှာ Scan ဖတ်လို့ရလာတဲ့ result တွေကို SonarQube Server ဆီကို ပို့ပါတယ်။ SonarQube Server က database ထဲမှာသိမ်းတယ်။ ပြီးရင် Quality profile တစ်ခုကိုသုံးပြီး ဘယ်တာကတော့ bugs ၊ ဘယ်တာကတော့ security vulnerabilities ရှိတယ် အစရှိသဖြင့်သတ်မှတ်ပြီး Dashboard အနေနဲ့ Report ထုတ်ပြပါတယ်။

နံပါတ် ၄ အဆင့်မှာတော့ SonarQube Server ပေါ်မှာရှိတဲ့ Quality Gate ကနေပြီးတော့ သတ်မှတ်ထားတဲ့ Conditions တွေနဲ့စပြီးတိုက်စစ်ပါတယ်။ (Quality Gate မှာ ရှိတဲ့ Conditions က မိမိတို့ကိုယ်တိုင်သတ်မှတ်လို့ရပါတယ်)

Conditions တွေ ပေါ်မူတည်ပြီး result ကို webhook event တစ်ခုအနေနဲ့ JSON payload တစ်ခု create လုပ်ကာ နံပါတ် ၅ အဆင့်မှာ Jenkins ဆီကို webhook request တစ်ခု ပြန်ပို့ပါတယ်။

Jenkins ဆီကိုပို့ပြန်ပို့တဲ့အခါမှာ Jenkins မှာရှိတဲ့ SonarQube webhook URL address ဆီကိုပို့တာပါ။ အဲ့ဒီ Jenkins မှာရှိတဲ့ SonarQube webhook URL address က ဘယ်ကရလဲဆိုရင် SonarQube plugin ကို Jenkins မှာ installation လုပ်တဲ့အချိန်မှာ ဖြစ်ပေါ်လာတာပါ။ (default အားဖြင့် JENKINS_URL/sonarqube/ or http://192:168.10.11:8080/sonarqube/ ဆိုပြီးရှိတတ်ပါတယ်)

အဲ့ဒီပို့လိုက်တဲ့ result ထဲက status ကိုကြည့်ပြီး Jenkins ကနေပြီးတော့ ဒီ pipeline က ဆက်သွားရမလား၊ ရပ်လိုက်ရမလား၊ စောင့်ရမှာလား ဆိုပြီး ပုံထဲက နံပါတ် ၆ အဆင့်မှာ ဆုံးဖြတ်ပါတယ်။ Payload မှာပါလာတဲ့ Status ကတော့ OK နဲ့ ERROR ပါ။

  • OK: The Quality Gate passed successfully.

  • ERROR: The Quality Gate failed.

Quality Gate က ပြန်ထုတ်ပြတာကတော့ ၄ ခု ရှိပါတယ်။

  • OK: The Quality Gate passed successfully.

  • ERROR: The Quality Gate failed.

  • IN PROGRESS: The analysis is still ongoing and has not been completed yet.

  • PENDING: The analysis is queued but has not started yet

Installation steps တွေကို တော့ ဒီမှာသေချာကြည့်နိုင်ပါတယ်။

ပိုမိုသိရှိချင်ရင်တော့ အောက်မှာ official documentation မှာသွားကြည့်နိုင်ပါတယ်ထားပါတယ်။

https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/ci-integration/jenkins-integration/key-features/

ဒီလောက်ဆိုရင်တော့ SonarQube ကို နည်းနည်းတော့ ရင်းနီးသွားပြီလို့ယူဆပါတယ်။ နောက်ထပ် post တွေမှာပြန်လည်တွေ့ပါမယ်။ အားလုံးကိုကျေးဇူးပါ။

Happy Learning … !!!

0
Subscribe to my newsletter

Read articles from Kadaie Kyiphyu directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Kadaie Kyiphyu
Kadaie Kyiphyu