ڈویلپرز کو سونار کیوب میں سورس کوڈ کوالٹی کنٹرول کی حیثیت دکھا رہا ہے۔

سونار کیوب ایک اوپن سورس کوڈ کوالٹی ایشورنس پلیٹ فارم ہے جو پروگرامنگ زبانوں کی ایک وسیع رینج کو سپورٹ کرتا ہے اور میٹرکس پر رپورٹنگ فراہم کرتا ہے جیسے کوڈ ڈپلیکیشن، کوڈنگ کے معیارات کی تعمیل، ٹیسٹ کوریج، کوڈ کی پیچیدگی، ممکنہ کیڑے وغیرہ۔ سونار کیوب آسانی سے تجزیہ کے نتائج کو دیکھتا ہے اور آپ کو وقت کے ساتھ ساتھ پروجیکٹ کی ترقی کی حرکیات کو ٹریک کرنے کی اجازت دیتا ہے۔

مقصد: ڈویلپرز کو سونار کیوب میں سورس کوڈ کوالٹی کنٹرول کی حیثیت دکھائیں۔

دو حل ہیں:

  • سونار کیوب میں سورس کوڈ کوالٹی کنٹرول اسٹیٹس چیک کرنے کے لیے اسکرپٹ چلائیں۔ اگر سونار کیوب میں سورس کوڈ کا کوالٹی کنٹرول پاس نہیں ہوتا ہے، تو اسمبلی کو ناکام کر دیں۔
  • مرکزی پروجیکٹ کے صفحہ پر سورس کوڈ کوالٹی کنٹرول کی حیثیت دکھائیں۔

سونار کیوب انسٹال کرنا

rpm پیکجوں سے سونارکیوب کو انسٹال کرنے کے لیے، ہم ریپوزٹری استعمال کریں گے۔ https://harbottle.gitlab.io/harbottle-main.

آئیے CentOS 7 کے ریپوزٹری کے ساتھ پیکیج کو انسٹال کریں۔

yum install -y https://harbottle.gitlab.io/harbottle-main/7/x86_64/harbottle-main-release.rpm

ہم خود سونارکیوب انسٹال کرتے ہیں۔

yum install -y sonarqube

انسٹالیشن کے دوران، زیادہ تر پلگ ان انسٹال ہو جائیں گے، لیکن آپ کو فائنڈ بگز اور پی ایم ڈی انسٹال کرنے کی ضرورت ہے۔

yum install -y sonarqube-findbugs sonarqube-pmd

سروس شروع کریں اور اسے اسٹارٹ اپ میں شامل کریں۔

systemctl start sonarqube
systemctl enable sonarqube

اگر لوڈ ہونے میں کافی وقت لگتا ہے، تو اختیارات کے آخر میں ایک بے ترتیب نمبر جنریٹر /dev/./urandom شامل کریں sonar.web.javaOpts

sonar.web.javaOpts=другие параметры -Djava.security.egd=file:/dev/urandom

سونار کیوب میں سورس کوڈ کوالٹی کنٹرول کی حیثیت کو چیک کرنے کے لیے اسکرپٹ چلانا۔

بدقسمتی سے، sonar-break-maven-plugin پلگ ان کو طویل عرصے سے اپ ڈیٹ نہیں کیا گیا ہے۔ تو آئیے اپنا اسکرپٹ لکھیں۔

جانچ کے لیے ہم ذخیرہ استعمال کریں گے۔ https://github.com/uweplonus/spotbugs-examples.

Gitlab میں درآمد کرنا۔ gitlab-ci.yml فائل شامل کریں:

variables:
  MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=~/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
  SONAR_HOST_URL: "http://172.26.9.226:9000"
  LOGIN: "admin" # логин sonarqube
  PASSWORD: "admin" # пароль sonarqube

cache:
  paths:
    - .m2/repository

build:
  image: maven:3.3.9-jdk-8
  stage: build
  script:
    - apt install -y jq || true
    - mvn $MAVEN_CLI_OPTS -Dmaven.test.failure.ignore=true org.jacoco:jacoco-maven-plugin:0.8.5:prepare-agent clean verify org.jacoco:jacoco-maven-plugin:0.8.5:report
    - mvn $MAVEN_CLI_OPTS -Dmaven.test.skip=true verify sonar:sonar -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$LOGIN -Dsonar.password=$PASSWORD -Dsonar.gitlab.project_id=$CI_PROJECT_PATH -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
    - export URL=$(cat target/sonar/report-task.txt | grep ceTaskUrl | cut -c11- ) #URL where report gets stored
    - echo $URL
    - |
      while : ;do
          curl -k -u "$LOGIN":"$PASSWORD" "$URL" -o analysis.txt
          export status=$(cat analysis.txt | jq -r '.task.status') #Status as SUCCESS, CANCELED, IN_PROGRESS or FAILED
          echo $status
          if [ ${status} == "SUCCESS" ];then
            echo "SONAR ANALYSIS SUCCESS";
            break
          fi
          sleep 5
      done
    - curl -k -u "$LOGIN":"$PASSWORD" "$URL" -o analysis.txt
    - export status=$(cat analysis.txt | jq -r '.task.status') #Status as SUCCESS, CANCELED or FAILED
    - export analysisId=$(cat analysis.txt | jq -r '.task.analysisId') #Get the analysis Id
    - |
      if [ "$status" == "SUCCESS" ]; then
        echo -e "SONAR ANALYSIS SUCCESSFUL...ANALYSING RESULTS";
        curl -k -u "$LOGIN":"$PASSWORD" "$SONAR_HOST_URL/api/qualitygates/project_status?analysisId=$analysisId" -o result.txt; #Analysis result like critical, major and minor issues
        export result=$(cat result.txt | jq -r '.projectStatus.status');

        if [ "$result" == "ERROR" ];then
          echo -e "91mSONAR RESULTS FAILED";
          echo "$(cat result.txt | jq -r '.projectStatus.conditions')"; #prints the critical, major and minor violations
          exit 1 #breaks the build for violations
        else
          echo -e "SONAR RESULTS SUCCESSFUL";
          echo "$(cat result.txt | jq -r '.projectStatus.conditions')";
          exit 0
        fi
      else
          echo -e "e[91mSONAR ANALYSIS FAILEDe[0m";
          exit 1 #breaks the build for failure in Step2
      fi
  tags:
    - docker

gitlab-ci.yml فائل کامل نہیں ہے۔ جانچ کی گئی اگر سونارکیوب میں اسکیننگ کے کام اس حیثیت کے ساتھ ختم ہوئے: "کامیابی"۔ ابھی تک کوئی دوسری حیثیت نہیں ہے۔ جیسے ہی دیگر سٹیٹس ہوں گے، میں اس پوسٹ میں .gitlab-ci.yml کو درست کر دوں گا۔

مرکزی پراجیکٹ کے صفحہ پر سورس کوڈ کوالٹی کنٹرول اسٹیٹس ڈسپلے کرنا

سونار کیوب کے لیے پلگ ان انسٹال کرنا

yum install -y sonarqube-qualinsight-badges

ہم سونار کیوب پر جاتے ہیں۔ http://172.26.9.115:9000/
ایک باقاعدہ صارف بنائیں، مثال کے طور پر "بیجز"۔
اس صارف کے تحت سونار کیوب میں لاگ ان کریں۔

ڈویلپرز کو سونار کیوب میں سورس کوڈ کوالٹی کنٹرول کی حیثیت دکھا رہا ہے۔

"میرا اکاؤنٹ" پر جائیں، ایک نیا ٹوکن بنائیں، مثال کے طور پر "read_all_repository" نام کے ساتھ اور "Genereate" پر کلک کریں۔

ڈویلپرز کو سونار کیوب میں سورس کوڈ کوالٹی کنٹرول کی حیثیت دکھا رہا ہے۔

ہم دیکھتے ہیں کہ ایک ٹوکن ظاہر ہوا ہے۔ وہ صرف 1 بار ظاہر ہوگا۔

ایڈمنسٹریٹر کے طور پر لاگ ان کریں۔

کنفیگریشن -> SVG بیجز پر جائیں۔

ڈویلپرز کو سونار کیوب میں سورس کوڈ کوالٹی کنٹرول کی حیثیت دکھا رہا ہے۔

اس ٹوکن کو "سرگرمی بیج ٹوکن" فیلڈ میں کاپی کریں اور محفوظ کریں بٹن پر کلک کریں۔

ڈویلپرز کو سونار کیوب میں سورس کوڈ کوالٹی کنٹرول کی حیثیت دکھا رہا ہے۔

ایڈمنسٹریشن -> سیکیورٹی -> پرمیشن ٹیمپلیٹس -> ڈیفالٹ ٹیمپلیٹ (اور دیگر ٹیمپلیٹس جو آپ کے پاس ہوں گے) پر جائیں۔

بیجز استعمال کرنے والے کے پاس "براؤز" چیک باکس کو نشان زد ہونا ضروری ہے۔

ٹیسٹنگ۔

مثال کے طور پر، آئیے پروجیکٹ کو لیں۔ https://github.com/jitpack/maven-simple.

آئیے اس پروجیکٹ کو درآمد کریں۔

مندرجہ ذیل مواد کے ساتھ .gitlab-ci.yml فائل کو پروجیکٹ روٹ میں شامل کریں۔

variables:
  MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=~/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
  SONAR_HOST_URL: "http://172.26.9.115:9000"
  LOGIN: "admin" # логин sonarqube
  PASSWORD: "admin" # пароль sonarqube

cache:
  paths:
    - .m2/repository

build:
  image: maven:3.3.9-jdk-8
  stage: build
  script:
    - mvn $MAVEN_CLI_OPTS -Dmaven.test.failure.ignore=true org.jacoco:jacoco-maven-plugin:0.8.5:prepare-agent clean verify org.jacoco:jacoco-maven-plugin:0.8.5:report
    - mvn $MAVEN_CLI_OPTS -Dmaven.test.skip=true verify sonar:sonar -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$LOGIN -Dsonar.password=$PASSWORD -Dsonar.gitlab.project_id=$CI_PROJECT_PATH -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
  tags:
    - docker

سونار کیوب میں پروجیکٹ اس طرح نظر آئے گا:

ڈویلپرز کو سونار کیوب میں سورس کوڈ کوالٹی کنٹرول کی حیثیت دکھا رہا ہے۔

README.md میں بیگز شامل کریں اور وہ اس طرح نظر آئیں گے:

ڈویلپرز کو سونار کیوب میں سورس کوڈ کوالٹی کنٹرول کی حیثیت دکھا رہا ہے۔

بیجز ڈسپلے کوڈ اس طرح لگتا ہے:

ڈویلپرز کو سونار کیوب میں سورس کوڈ کوالٹی کنٹرول کی حیثیت دکھا رہا ہے۔

بیجز ڈسپلے سٹرنگ کو پارس کرنا:

[![Quality Gate](http://172.26.9.115:9000/api/badges/gate?key=com.github.jitpack:maven-simple)](http://172.26.9.115:9000/dashboard?id=com.github.jitpack%3Amaven-simple)
[![Название](http://172.26.9.115:9000/api/badges/gate?key=Project Key)](http://172.26.9.115:9000/dashboard?id=id-проекта)
[![Coverage](http://172.26.9.115:9000/api/badges/measure?key=com.github.jitpack:maven-simple&metric=coverage)](http://172.26.9.115:9000/dashboard?id=com.github.jitpack%3Amaven-simple)
[![Название Метрики](http://172.26.9.115:9000/api/badges/measure?key=Project Key&metric=МЕТРИКА)](http://172.26.9.115:9000/dashboard?id=id-проекта)

پروجیکٹ کی اور پروجیکٹ آئی ڈی کہاں سے حاصل کریں/چیک کریں۔

پروجیکٹ کلید نیچے دائیں طرف ہے۔ یو آر ایل پروجیکٹ آئی ڈی پر مشتمل ہے۔

ڈویلپرز کو سونار کیوب میں سورس کوڈ کوالٹی کنٹرول کی حیثیت دکھا رہا ہے۔

میٹرکس حاصل کرنے کے اختیارات ہو سکتے ہیں۔ یہاں دیکھو.

بہتری کے لیے تمام پل کی درخواستیں، بگ کی اصلاحات اس ذخیرہ میں جمع کروائیں۔.

سونار کیوب کے بارے میں ٹیلی گرام چیٹ https://t.me/sonarqube_ru
DevSecOps کے بارے میں ٹیلی گرام چیٹ - محفوظ DevOps https://t.me/sec_devops

ماخذ: www.habr.com

نیا تبصرہ شامل کریں