Näytä kehittäjille lähdekoodin laadunvalvonnan tila SonarQubessa

SonarQube on avoimen lähdekoodin laadunvarmistusalusta, joka tukee monenlaisia ​​ohjelmointikieliä ja tarjoaa raportteja mittareista, kuten koodin monistamisesta, koodausstandardien noudattamisesta, testin kattavuudesta, koodin monimutkaisuudesta, mahdollisista virheistä ja muista. SonarQube visualisoi analyysitulokset kätevästi ja antaa sinun seurata projektin kehityksen dynamiikkaa ajan mittaan.

Tavoite: Näytä kehittäjille lähdekoodin laadunvalvonnan tila SonarQubessa.

Ratkaisuja on kaksi:

  • Suorita komentosarja tarkistaaksesi lähdekoodin laadunvalvonnan tilan SonarQubessa. Jos lähdekoodin laadunvalvonta SonarQubessa ei läpäise, kokoonpano epäonnistuu.
  • Näytä lähdekoodin laadunvalvonnan tila projektin pääsivulla.

SonarQuben asentaminen

Käytämme arkistoa sonarquben asentamiseen rpm-paketeista https://harbottle.gitlab.io/harbottle-main.

Asennamme paketti CentOS 7:n arkiston kanssa.

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

Asennamme itse sonarquben.

yum install -y sonarqube

Asennuksen aikana useimmat laajennukset asennetaan, mutta sinun on asennettava findbugs ja pmd

yum install -y sonarqube-findbugs sonarqube-pmd

Käynnistä palvelu ja lisää se käynnistykseen

systemctl start sonarqube
systemctl enable sonarqube

Jos lataaminen kestää kauan, lisää satunnaislukugeneraattori /dev/./urandom vaihtoehtojen sonar.web.javaOpts loppuun

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

Komentosarjan suorittaminen lähdekoodin laadunvalvonnan tilan tarkistamiseksi SonarQubessa.

Valitettavasti sonar-break-maven-plugin-laajennusta ei ole päivitetty pitkään aikaan. Joten kirjoitetaan oma käsikirjoituksemme.

Testaamiseen käytämme arkistoa https://github.com/uweplonus/spotbugs-examples.

Tuodaan Gitlabiin. Lisää .gitlab-ci.yml-tiedosto:

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-tiedosto ei ole täydellinen. Testattu, päättyivätkö sonarquben skannaustehtävät tilaan: "SUCCESS". Toistaiseksi muita tiloja ei ole ollut. Heti kun on muita tiloja, korjaan .gitlab-ci.yml tässä viestissä.

Lähdekoodin laadunvalvonnan tilan näyttäminen projektin pääsivulla

SonarQube-laajennuksen asentaminen

yum install -y sonarqube-qualinsight-badges

Menemme SonarQubeen klo http://172.26.9.115:9000/
Luo tavallinen käyttäjä, esimerkiksi "merkit".
Kirjaudu SonarQubeen tällä käyttäjällä.

Näytä kehittäjille lähdekoodin laadunvalvonnan tila SonarQubessa

Siirry kohtaan "Oma tili", luo uusi tunnus, esimerkiksi nimellä "read_all_repository" ja napsauta "Luo".

Näytä kehittäjille lähdekoodin laadunvalvonnan tila SonarQubessa

Näemme, että merkki on ilmestynyt. Hän ilmestyy vain 1 kerran.

Kirjaudu sisään järjestelmänvalvojana.

Siirry kohtaan Määritykset -> SVG-merkit

Näytä kehittäjille lähdekoodin laadunvalvonnan tila SonarQubessa

Kopioi tämä tunnus "Activity badge token" -kenttään ja napsauta Tallenna-painiketta.

Näytä kehittäjille lähdekoodin laadunvalvonnan tila SonarQubessa

Siirry kohtaan Hallinta -> Suojaus -> Lupamallit -> Oletusmalli (ja muut mallit, joita sinulla on).

Merkkien käyttäjän Selaa-valintaruutu on oltava valittuna.

Testaus.

Otetaan esimerkiksi projekti https://github.com/jitpack/maven-simple.

Tuodaan tämä projekti.

Lisää .gitlab-ci.yml-tiedosto projektin juureen seuraavalla sisällö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
  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

SonarQubessa projekti näyttää tältä:

Näytä kehittäjille lähdekoodin laadunvalvonnan tila SonarQubessa

Lisää pussit README.md:hen ja ne näyttävät tältä:

Näytä kehittäjille lähdekoodin laadunvalvonnan tila SonarQubessa

Merkkien näyttökoodi näyttää tältä:

Näytä kehittäjille lähdekoodin laadunvalvonnan tila SonarQubessa

Merkkien näyttömerkkijonon jäsentäminen:

[![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-проекта)

Mistä saada/tarkistaa Project Key ja projektitunnus.

Project Key on oikeassa alakulmassa. URL-osoite sisältää projektin tunnuksen.

Näytä kehittäjille lähdekoodin laadunvalvonnan tila SonarQubessa

Vaihtoehtoja mittareiden saamiseksi voivat olla katso tänne.

Kaikki vetopyynnöt parannuksista, virheenkorjauksista lähetä tähän arkistoon.

Telegram-keskustelu SonarQubesta https://t.me/sonarqube_ru
Telegram-keskustelu DevSecOpsista - suojattu DevOps https://t.me/sec_devops

Lähde: will.com

Lisää kommentti