Mampiseho ny sata mifehy ny kalitaon'ny loharano ao amin'ny SonarQube amin'ny mpamorona

SonarQube dia sehatra fanomezan-toky ny kalitaon'ny kaody open source izay manohana fiteny fandaharana isan-karazany ary manome tatitra momba ny metrika toy ny dika mitovy amin'ny kaody, ny fanarahana ny fenitry ny kaody, ny fandrakofam-panadinana, ny fahasarotan'ny kaody, ny mety ho bibikely ary ny maro hafa. SonarQube dia mijery tsara ny valin'ny famakafakana ary ahafahanao manara-maso ny dinamika amin'ny fampandrosoana ny tetikasa rehefa mandeha ny fotoana.

Tanjona: Asehoy ny mpamorona ny sata mifehy ny kalitaon'ny kaody loharano ao amin'ny SonarQube.

Misy vahaolana roa:

  • Manaova script hijerena ny sata mifehy ny kalitaon'ny loharano ao amin'ny SonarQube. Raha tsy mandeha ny fanaraha-maso ny kalitaon'ny kaody loharano ao amin'ny SonarQube, dia tsy mahomby ny fivoriambe.
  • Asehoy ny sata mifehy ny kalitaon'ny kaody loharano eo amin'ny pejin'ny tetikasa lehibe.

Fametrahana SonarQube

Raha hametraka sonarqube avy amin'ny fonosana rpm dia hampiasa ny tahiry izahay https://harbottle.gitlab.io/harbottle-main.

Andao hametraka ny fonosana miaraka amin'ny tahiry ho an'ny CentOS 7.

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

Mametraka sonarqube mihitsy izahay.

yum install -y sonarqube

Mandritra ny fametrahana dia hapetraka ny ankamaroan'ny plugins, saingy mila mametraka findbugs sy pmd ianao

yum install -y sonarqube-findbugs sonarqube-pmd

Alefaso ny serivisy ary ampio amin'ny fanombohana

systemctl start sonarqube
systemctl enable sonarqube

Raha toa ka ela be ny fandefasana azy dia ampio ny mpamokatra nomerao kisendrasendra /dev/./urandom any amin'ny faran'ny safidy sonar.web.javaOpts

sonar.web.javaOpts=Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ -Djava.security.egd=file:/dev/urandom

Mandeha script hijerena ny sata mifehy ny kalitaon'ny kaody loharano ao amin'ny SonarQube.

Indrisy anefa fa tsy nohavaozina hatry ny ela ny plugin sonar-break-maven-plugin. Andao Γ ry hanoratra ny scripty manokana.

Ho an'ny fitsapana dia hampiasa ny tahiry izahay https://github.com/uweplonus/spotbugs-examples.

Manafatra ao amin'ny Gitlab. Ampio ny rakitra .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

Tsy tonga lafatra ny rakitra .gitlab-ci.yml. Notsapaina raha nifarana tamin'ny sata hoe "SUCCESS" ny asa scanning amin'ny sonarqube. Hatreto dia tsy mbola nisy sata hafa. Raha vao misy sata hafa dia hanitsy ny .gitlab-ci.yml amin'ity lahatsoratra ity aho.

Fampisehoana ny sata mifehy ny kalitaon'ny loharano ao amin'ny pejin'ny tetikasa lehibe

Fametrahana ny plugin ho an'ny SonarQube

yum install -y sonarqube-qualinsight-badges

Mankany SonarQube izahay amin'ny http://172.26.9.115:9000/
Mamorona mpampiasa mahazatra, ohatra "badge".
Midira ao amin'ny SonarQube eo ambanin'ity mpampiasa ity.

Mampiseho ny sata mifehy ny kalitaon'ny loharano ao amin'ny SonarQube amin'ny mpamorona

Mandehana any amin'ny "My compte", mamorona marika vaovao, ohatra amin'ny anarana hoe "read_all_repository" ary tsindrio ny "Genereate".

Mampiseho ny sata mifehy ny kalitaon'ny loharano ao amin'ny SonarQube amin'ny mpamorona

Hitantsika fa nisy famantarana niseho. In-1 ihany no hisehoany.

Midira ho mpitantana.

Mandehana any amin'ny Configuration -> SVG Badges

Mampiseho ny sata mifehy ny kalitaon'ny loharano ao amin'ny SonarQube amin'ny mpamorona

Adikao ao amin'ny saha "Activity badge token" ity marika ity ary tsindrio ny bokotra save.

Mampiseho ny sata mifehy ny kalitaon'ny loharano ao amin'ny SonarQube amin'ny mpamorona

Mandehana any amin'ny Administration -> Security -> Permission Templates -> Default template (sy ireo modely hafa anananao).

Ny mpampiasa badge dia tsy maintsy manana ny boaty "Browse" voamarika.

Fizahan-toetra.

Ohatra, andeha horaisintsika ny tetikasa https://github.com/jitpack/maven-simple.

Andao hanafatra ity tetikasa ity.

Ampio ny rakitra .gitlab-ci.yml amin'ny fototr'asa miaraka amin'ity atiny manaraka ity.

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

Ao amin'ny SonarQube dia ho toy izao ny tetikasa:

Mampiseho ny sata mifehy ny kalitaon'ny loharano ao amin'ny SonarQube amin'ny mpamorona

Ampio kitapo ao amin'ny README.md dia ho toy izao izy ireo:

Mampiseho ny sata mifehy ny kalitaon'ny loharano ao amin'ny SonarQube amin'ny mpamorona

Toy izao ny kaody fampisehoana badge:

Mampiseho ny sata mifehy ny kalitaon'ny loharano ao amin'ny SonarQube amin'ny mpamorona

Famaritana ny tady fampisehoana marika:

[![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-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°)

Aiza no hahazoana/jereo ny Project Key sy ny ID tetikasa.

Project Key dia eo amin'ny farany ambany havanana. Ny URL dia misy ny ID tetikasa.

Mampiseho ny sata mifehy ny kalitaon'ny loharano ao amin'ny SonarQube amin'ny mpamorona

Ny safidy hahazoana metrika dia mety jereo eto.

Ny fangatahana fisintonana rehetra ho an'ny fanatsarana, fanamboarana bug alefaso amin'ity tahiry ity.

Resaka telegrama momba ny SonarQube https://t.me/sonarqube_ru
Resaka telegrama momba ny DevSecOps - DevOps azo antoka https://t.me/sec_devops

Source: www.habr.com

Add a comment