Vertoon bronkode kwaliteitbeheerstatus in SonarQube aan ontwikkelaars

SonarQube is 'n oopbronkode-gehalteversekeringsplatform wat 'n wye reeks programmeertale ondersteun en verslagdoening verskaf oor maatstawwe soos kodeduplisering, nakoming van koderingstandaarde, toetsdekking, kodekompleksiteit, potensiële foute, en meer. SonarQube visualiseer gerieflik analise resultate en laat jou toe om die dinamika van projekontwikkeling oor tyd na te spoor.

Doelwit: Wys ontwikkelaars die status van bronkode kwaliteitbeheer in SonarQube.

Daar is twee oplossings:

  • Begin 'n skrip om die bronkode-kwaliteitbeheerstatus in SonarQube na te gaan. As die gehaltebeheer van die bronkode in SonarQube nie slaag nie, misluk dan die samestelling.
  • Wys bronkode kwaliteit beheer status op die hoof projek bladsy.

Installeer SonarQube

Om sonarqube vanaf rpm-pakkette te installeer, sal ons die repository gebruik https://harbottle.gitlab.io/harbottle-main.

Kom ons installeer die pakket met die bewaarplek vir CentOS 7.

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

Ons installeer sonarqube self.

yum install -y sonarqube

Tydens installasie sal die meeste inproppe geïnstalleer word, maar jy moet findbugs en pmd installeer

yum install -y sonarqube-findbugs sonarqube-pmd

Begin die diens en voeg dit by opstart

systemctl start sonarqube
systemctl enable sonarqube

As dit lank neem om te laai, voeg dan 'n ewekansige getalgenerator /dev/./urandom by aan die einde van die opsies sonar.web.javaOpts

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

Begin 'n skrip om die status van bronkode-gehaltebeheer in SonarQube na te gaan.

Ongelukkig is die sonar-break-maven-plugin-inprop vir 'n lang tyd nie opgedateer nie. So kom ons skryf ons eie draaiboek.

Vir toetsing sal ons die bewaarplek gebruik https://github.com/uweplonus/spotbugs-examples.

Voer tans in Gitlab in. Voeg die .gitlab-ci.yml-lêer by:

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

Die .gitlab-ci.yml-lêer is nie perfek nie. Getoets of skanderingstake in sonarqube geëindig het met die status: "SUKSES". Tot dusver was daar geen ander statusse nie. Sodra daar ander statusse is, sal ek .gitlab-ci.yml in hierdie pos regstel.

Vertoon die bronkode kwaliteitbeheerstatus op die hoofprojekbladsy

Die installering van die inprop vir SonarQube

yum install -y sonarqube-qualinsight-badges

Ons gaan na SonarQube by http://172.26.9.115:9000/
Skep 'n gewone gebruiker, byvoorbeeld "kentekens".
Meld aan by SonarQube onder hierdie gebruiker.

Vertoon bronkode kwaliteitbeheerstatus in SonarQube aan ontwikkelaars

Gaan na "My rekening", skep 'n nuwe token, byvoorbeeld met die naam "read_all_repository" en klik "Genereate".

Vertoon bronkode kwaliteitbeheerstatus in SonarQube aan ontwikkelaars

Ons sien dat 'n teken verskyn het. Hy sal slegs 1 keer verskyn.

Teken in as administrateur.

Gaan na Configuration -> SVG Badges

Vertoon bronkode kwaliteitbeheerstatus in SonarQube aan ontwikkelaars

Kopieer hierdie teken na die "Aktiwiteitkentekenteken"-veld en klik op die stoor-knoppie.

Vertoon bronkode kwaliteitbeheerstatus in SonarQube aan ontwikkelaars

Gaan na Administrasie -> Sekuriteit -> Toestemmingsjablone -> Versteksjabloon (en ander sjablone wat jy sal hê).

Die kentekengebruiker moet die "Blaai"-merkblokkie gemerk hê.

Toets.

Kom ons neem byvoorbeeld die projek https://github.com/jitpack/maven-simple.

Kom ons voer hierdie projek in.

Voeg die .gitlab-ci.yml-lêer by die projekwortel met die volgende inhoud.

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

In SonarQube sal die projek soos volg lyk:

Vertoon bronkode kwaliteitbeheerstatus in SonarQube aan ontwikkelaars

Voeg sakke by README.md en hulle sal so lyk:

Vertoon bronkode kwaliteitbeheerstatus in SonarQube aan ontwikkelaars

Die kentekens vertoon kode lyk soos volg:

Vertoon bronkode kwaliteitbeheerstatus in SonarQube aan ontwikkelaars

Ontleding van die kentekens vertoonstring:

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

Waar om Projeksleutel en projek-ID te kry/kontroleer.

Projeksleutel is regs onder. Die URL bevat die projek-ID.

Vertoon bronkode kwaliteitbeheerstatus in SonarQube aan ontwikkelaars

Opsies vir die verkryging van statistieke kan wees kyk hier.

Alle trekversoeke vir verbeterings, foutoplossings by hierdie bewaarplek in.

Telegramklets oor SonarQube https://t.me/sonarqube_ru
Telegram-klets oor DevSecOps - veilige DevOps https://t.me/sec_devops

Bron: will.com

Voeg 'n opmerking