E bonts'a boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube ho bahlahisi

SonarQube ke sethala sa netefatso ea boleng ba khoutu e bulehileng e ts'ehetsang lipuo tse fapaneng tsa mananeo mme e fana ka tlaleho ka metrics joalo ka ho pheta-pheta khoutu, ho latela melao ea likhoutu, ts'ireletso ea liteko, ho rarahana ha khoutu, liphoso tse ka bang teng, le tse ling. SonarQube e bona liphetho tsa tlhahlobo habonolo mme e u lumella ho lekola matla a nts'etsopele ea projeke ha nako e ntse e ea.

Sepheo: Bontša ba ntlafatsang boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube.

Ho na le litharollo tse peli:

  • Etsa sengoloa ho lekola boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube. Haeba taolo ea boleng ba khoutu ea mohloli ho SonarQube e sa fete, joale u hloleha kopano.
  • Hlahisa boemo ba taolo ea boleng ba khoutu ea mohloli leqepheng le ka sehloohong la morero.

Ho kenya SonarQube

Ho kenya sonarqube ho tsoa liphutheloana tsa rpm, re tla sebelisa polokelo https://harbottle.gitlab.io/harbottle-main.

Ha re kenye sephutheloana ka polokelo ea CentOS 7.

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

Re kenya sonarqube ka boeona.

yum install -y sonarqube

Nakong ea ho kenya, li-plugins tse ngata li tla kenngoa, empa u hloka ho kenya findbugs le pmd

yum install -y sonarqube-findbugs sonarqube-pmd

Qala tšebeletso 'me u e kenye ho qala

systemctl start sonarqube
systemctl enable sonarqube

Haeba ho nka nako e telele ho kenya, joale eketsa jenereithara ea nomoro e sa reroang /dev/./urandom qetellong ea likhetho sonar.web.javaOpts

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

Ho tsamaisa sengoloa ho lekola boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube.

Ka bomalimabe, plugin ea sonar-break-maven-plugin ha e so ntlafatsoe nako e telele. Kahoo ha re ingoleng mongolo oa rona.

Ho etsa liteko re tla sebelisa polokelo https://github.com/uweplonus/spotbugs-examples.

Ho kenya Gitlab. Kenya faele ea .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

Faele ea .gitlab-ci.yml ha e ea nepahala. E lekoa haeba mesebetsi ea ho hlahloba ka sonarqube e felile ka boemo: "KATLEHO". Ho fihlela joale ha ho so be le maemo a mang. Hang ha ho na le li-status tse ling, ke tla lokisa .gitlab-ci.yml posong ena.

E bonts'a boemo ba taolo ea boleng ba khoutu ea mohloli leqepheng le ka sehloohong la morero

Ho kenya plugin bakeng sa SonarQube

yum install -y sonarqube-qualinsight-badges

Re ea ho SonarQube ho http://172.26.9.115:9000/
Etsa mosebelisi ea tloaelehileng, mohlala "beche".
Kena ho SonarQube tlasa mosebelisi enoa.

E bonts'a boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube ho bahlahisi

E-ea ho "Ak'haonte ea ka", etsa letšoao le lecha, ka mohlala ka lebitso "read_all_repository" 'me u tobetse "Hlahisa".

E bonts'a boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube ho bahlahisi

Re bona hore letshwao le hlahile. O tla hlaha hang feela.

Kena joalo ka molaoli.

Eya ho Configuration -> Libeche tsa SVG

E bonts'a boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube ho bahlahisi

Kopitsa lets'oao lena tšimong ea "Activity bedge token" ebe o tobetsa konopo ea ho boloka.

E bonts'a boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube ho bahlahisi

Eya ho Tsamaiso -> Ts'ireletso -> Lithempleite tsa Tumello -> Sebopeho sa kamehla (le litempele tse ling tseo u tla ba le tsona).

Mosebelisi oa libeche o tlameha ho khetha lebokose la "Browse" le tšoailoeng.

Teko.

Ka mohlala, ha re nke morero https://github.com/jitpack/maven-simple.

Ha re tlise projeke ena kantle ho naha.

Kenya faele ea .gitlab-ci.yml motsong oa morero ka litaba tse latelang.

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

Ho SonarQube projeke e tla shebahala tjena:

E bonts'a boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube ho bahlahisi

Kenya mekotla ho README.md 'me e tla shebahala tjena:

E bonts'a boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube ho bahlahisi

Khoutu e bonts'ang libeche e shebahala tjena:

E bonts'a boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube ho bahlahisi

Ho hlophisa libeche thapo e bontšang:

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

Moo u ka fumanang / hlahloba Senotlolo sa Morero le id ea morero.

Project Key e ka tlase ka ho le letona. URL e na le id ea morero.

E bonts'a boemo ba taolo ea boleng ba khoutu ea mohloli ho SonarQube ho bahlahisi

Likhetho tsa ho fumana metrics li ka ba sheba mona.

Likopo tsohle tsa ho hula bakeng sa ntlafatso, ho lokisoa ha liphoso inehela sebakeng sena sa polokelo.

Puisano ea thelekramo ka SonarQube https://t.me/sonarqube_ru
Puisano ea thelekramo ka DevSecOps - DevOps e sireletsehileng https://t.me/sec_devops

Source: www.habr.com

Eketsa ka tlhaloso