Visar utvecklarna statusen för kodkvalitetskontroll i SonarQube

SonarQube Àr en öppen plattform för kontinuerlig kodkvalitetskontroll som stödjer ett stort antal programmeringssprÄk och möjliggör rapportering av metrik som kodduplicering, följsamhet till kodstandarder, testtÀckning, kodkomplexitet, potentiella fel, osv. SonarQube visualiserar analysresultaten pÄ ett anvÀndarvÀnligt sÀtt och möjliggör spÄrning av projektets utveckling över tid.

Uppgift: Visa utvecklarna statusen för kodkvalitetskontroll i SonarQube.

Det finns tvÄ sÀtt att lösa det:

  • Kör ett skript för att kontrollera statusen för kodkvalitetskontroll i SonarQube. Om kodkvalitetskontrollen i SonarQube misslyckas, ska bygget misslyckas.
  • Visa statusen för kodkvalitetskontroll pĂ„ projektets huvudsida.

Installation av SonarQube

För att installera SonarQube frÄn rpm-paket, anvÀnd repot https://harbottle.gitlab.io/harbottle-main.

Vi installerar paketet med repot för CentOS 7.

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

Vi installerar sjÀlva SonarQube.

yum install -y sonarqube

Vid installation kommer de flesta plugins att installeras, men vi behöver installera findbugs och pmd

yum install -y sonarqube-findbugs sonarqube-pmd

Starta tjÀnsten och lÀgg till den i autostart

systemctl start sonarqube
systemctl enable sonarqube

Om det tar lÄng tid att ladda, lÀgg till i slutet av alternativen sonar.web.javaOpts en slumpgenerator /dev/.urandom

sonar.web.javaOpts=övriga alternativ -Djava.security.egd=file:/dev/urandom

Kör skriptet för att kontrollera statusen för kodkvalitetskontroll i SonarQube.

TyvÀrr har pluginet sonar-break-maven-plugin inte uppdaterats pÄ lÀnge. DÀrför skriver vi vÄrt eget skript.

För testning ska vi anvÀnda repot https://github.com/uweplonus/spotbugs-examples.

Importera i Gitlab. LĂ€gg till filen .gitlab-ci.yml:

variabler:
  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" # anvÀndarnamn sonarqube
  PASSWORD: "admin" # lösenord 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 dÀr rapporten sparas
    - echo $URL
    - |
      while : ;do
          curl -k -u "$LOGIN":"$PASSWORD" "$URL" -o analysis.txt
          export status=$(cat analysis.txt | jq -r '.task.status') #Status som SUCCESS, CANCELED, IN_PROGRESS eller FAILED
          echo $status
          if [ ${status} == "SUCCESS" ];then
            echo "SONAR ANALYS 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 som SUCCESS, CANCELED eller FAILED
    - export analysisId=$(cat analysis.txt | jq -r '.task.analysisId') #HĂ€mta analys-ID
    - |
      if [ "$status" == "SUCCESS" ]; then
        echo -e "SONAR ANALYS FRAMGÅNGSRIK...ANALYSERAR RESULTAT";
        curl -k -u "$LOGIN":"$PASSWORD" "$SONAR_HOST_URL/api/qualitygates/project_status?analysisId=$analysisId" -o result.txt; #Analysresultat som kritiska, stora och smÄ problem
        export result=$(cat result.txt | jq -r '.projectStatus.status');

        if [ "$result" == "ERROR" ];then
          echo -e "91mSONAR RESULTAT MISSLYCKADES";
          echo "$(cat result.txt | jq -r '.projectStatus.conditions')"; #skriver ut de kritiska, stora och smÄ övertrÀdelserna
          exit 1 #avbryter bygget för övertrÀdelser
        else
          echo -e "SONAR RESULTAT FRAMGÅNGSRIKA";
          echo "$(cat result.txt | jq -r '.projectStatus.conditions')";
          exit 0
        fi
      else
          echo -e "e[91mSONAR ANALYS MISSLYCKADESe[0m";
          exit 1 #avbryter bygget för fel i Steg2
      fi
  tags:
    - docker

.gitlab-ci.yml-filen Àr inte perfekt. Den har testats för att kontrollera om uppgifterna avslutas med status: "SUCCESS". Jag har Ànnu inte haft nÄgra andra statusar. NÀr det kommer andra statusar kommer jag att justera .gitlab-ci.yml i detta inlÀgg.

Visning pÄ projektets startsida för status för kvalitetskontroll av kÀllkoden

Installera tillÀgget för SonarQube

yum install -y sonarqube-qualinsight-badges

Logga in pÄ SonarQube pÄ adressen http://172.26.9.115:9000/
Skapa en vanlig anvÀndare, till exempel "badges".
Logga in med den hÀr anvÀndaren i SonarQube.

Visar utvecklarna statusen för kodkvalitetskontroll i SonarQube

GÄ till "Min anvÀndare", skapa en ny token, till exempel med namnet "read_all_repository" och klicka pÄ "Generera".

Visar utvecklarna statusen för kodkvalitetskontroll i SonarQube

Vi ser att token har dykt upp. Den kommer bara att visas en gÄng.

Logga in som administratör.

GĂ„ till Konfiguration -> SVG Badges

Visar utvecklarna statusen för kodkvalitetskontroll i SonarQube

Kopiera den hÀr token till fÀltet "Activity badge token" och klicka pÄ knappen spara.

Visar utvecklarna statusen för kodkvalitetskontroll i SonarQube

GÄ till Administration -> SÀkerhet -> Behörighetsmallar -> Standardmall (och andra mallar som du har).

För anvÀndaren badges mÄste du markera "BlÀddra".

Testning.

Vi tar ett exempelprojekt. https://github.com/jitpack/maven-simple.

Importera detta projekt.

LÀgg till filen .gitlab-ci.yml i projektets rot med följande innehÄll.

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 anvÀndarnamn
  PASSWORD: "admin" # sonarqube lösenord

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

I SonarQube kommer projektet att se ut sÄ hÀr:

Visar utvecklarna statusen för kodkvalitetskontroll i SonarQube

LÀgg till badges i README.md och de kommer att se ut sÄ hÀr:

Visar utvecklarna statusen för kodkvalitetskontroll i SonarQube

Koden för att visa badges ser ut sÄ hÀr:

Visar utvecklarna statusen för kodkvalitetskontroll i SonarQube

Analys av strÀngen för att visa badges:

[![Kvalitetspassering](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.jitpackmaven-simple)
[![Namn](http://172.26.9.115:9000/api/badges/gate?key=Project Key)](http://172.26.9.115:9000/dashboard?id=id-projekt)
[![TĂ€ckning](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.jitpackmaven-simple)
[![Metriknamn](http://172.26.9.115:9000/api/badges/measure?key=Project Key&metric=МЕбРИКА)](http://172.26.9.115:9000/dashboard?id=id-projekt)

Var du kan hitta/kontrollera Project Key och id-projekt.

Project Key finns lÀngst ner till höger. I URL:en finns id-projektet.

Visar utvecklarna statusen för kodkvalitetskontroll i SonarQube

Alternativ för att hÀmta metrik kan ses hÀr.

Alla pull requests för förbÀttringar, buggfixar skicka till detta repository.

Telegram-chat om SonarQube https://t.me/sonarqube_ru
Telegram-chat om DevSecOps — sĂ€ker DevOps https://t.me/sec_devops

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster