A’ taisbeanadh inbhe smachd càileachd còd stòr ann an SonarQube do luchd-leasachaidh

Tha SonarQube na àrd-ùrlar gealltanas càileachd còd stòr fosgailte a bheir taic do raon farsaing de chànanan prògramaidh agus a bheir seachad aithris air meatrach leithid dùblachadh còd, gèilleadh inbhean còdaidh, còmhdach deuchainn, iom-fhillteachd còd, bugaichean a dh’ fhaodadh a bhith ann, agus barrachd. Bidh SonarQube gu h-iomchaidh a’ toirt sealladh air toraidhean anailis agus a’ leigeil leat sùil a chumail air daineamaigs leasachadh pròiseict thar ùine.

Amas: Seall do luchd-leasachaidh inbhe smachd càileachd còd stòr ann an SonarQube.

Tha dà fhuasgladh ann:

  • Ruith sgriobt gus sgrùdadh a dhèanamh air inbhe smachd càileachd còd stòr ann an SonarQube. Mura tèid smachd càileachd a’ chòd stòr ann an SonarQube seachad, fàillig an t-seanadh.
  • Seall inbhe smachd càileachd còd stòr air prìomh dhuilleag a’ phròiseict.

A stàladh SonarQube

Gus sonarqube a stàladh bho phasganan rpm, cleachdaidh sinn an stòr https://harbottle.gitlab.io/harbottle-main.

Nach stàlaich sinn am pasgan leis an stòr airson CentOS 7.

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

Bidh sinn a’ stàladh sonarqube fhèin.

yum install -y sonarqube

Rè an stàladh, thèid a 'mhòr-chuid de plugins a stàladh, ach feumaidh tu lorg bugs agus pmd a stàladh

yum install -y sonarqube-findbugs sonarqube-pmd

Cuir air bhog an t-seirbheis agus cuir ris gu toiseach tòiseachaidh

systemctl start sonarqube
systemctl enable sonarqube

Ma bheir e ùine mhòr ri luchdachadh, an uairsin cuir gineadair àireamh air thuaiream /dev/./urandom gu deireadh nan roghainnean sonar.web.javaOpts

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

A’ ruith sgriobt gus sgrùdadh a dhèanamh air inbhe smachd càileachd còd stòr ann an SonarQube.

Gu mì-fhortanach, chan eil am plugan sonar-break-maven-plugin air ùrachadh airson ùine mhòr. Mar sin sgrìobhamaid ar sgriobt fhèin.

Airson deuchainn cleachdaidh sinn an stòr https://github.com/uweplonus/spotbugs-examples.

A’ toirt a-steach gu Gitlab. Cuir am faidhle .gitlab-ci.yml ris:

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

Chan eil am faidhle .gitlab-ci.yml foirfe. Deuchainn an robh gnìomhan sganaidh ann an sonarqube a’ tighinn gu crìch leis an inbhe: “SUCCESS”. Gu ruige seo cha robh inbhe sam bith eile ann. Cho luath ‘s a bhios inbhean eile ann, ceartaichidh mi .gitlab-ci.yml sa phost seo.

A’ taisbeanadh inbhe smachd càileachd còd stòr air prìomh dhuilleag a’ phròiseict

A’ stàladh am plugan airson SonarQube

yum install -y sonarqube-qualinsight-badges

Bidh sinn a’ dol gu SonarQube aig http://172.26.9.115:9000/
Cruthaich cleachdaiche cunbhalach, mar eisimpleir "bràistean".
Log a-steach gu SonarQube fon chleachdaiche seo.

A’ taisbeanadh inbhe smachd càileachd còd stòr ann an SonarQube do luchd-leasachaidh

Rach gu "Mo chunntas", cruthaich comharradh ùr, mar eisimpleir leis an ainm "read_all_repository" agus briog air "Genereate".

A’ taisbeanadh inbhe smachd càileachd còd stòr ann an SonarQube do luchd-leasachaidh

Chì sinn gu bheil tòcan air nochdadh. Cha nochd e ach 1 uair.

Log a-steach mar rianadair.

Rach gu Configuration -> SVG Badges

A’ taisbeanadh inbhe smachd càileachd còd stòr ann an SonarQube do luchd-leasachaidh

Dèan lethbhreac den tòcan seo a-steach don raon "Tòcan baidse gnìomhachd" agus cliog air a’ phutan sàbhalaidh.

A’ taisbeanadh inbhe smachd càileachd còd stòr ann an SonarQube do luchd-leasachaidh

Rach gu Rianachd -> Tèarainteachd -> Teamplaidean Cead -> Teamplaid bunaiteach (agus teamplaidean eile a bhios agad).

Feumaidh neach-cleachdaidh nam bràistean am bogsa-dearbhaidh “Rannsaich” a sgrùdadh.

Deuchainn.

Mar eisimpleir, gabhamaid am pròiseact https://github.com/jitpack/maven-simple.

Bheir sinn a-steach am pròiseact seo.

Cuir am faidhle .gitlab-ci.yml ri freumh a’ phròiseict leis an t-susbaint a leanas.

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

Ann an SonarQube seallaidh am pròiseact mar seo:

A’ taisbeanadh inbhe smachd càileachd còd stòr ann an SonarQube do luchd-leasachaidh

Cuir pocannan ri README.md agus seallaidh iad mar seo:

A’ taisbeanadh inbhe smachd càileachd còd stòr ann an SonarQube do luchd-leasachaidh

Tha còd taisbeanaidh nam bràistean a’ coimhead mar seo:

A’ taisbeanadh inbhe smachd càileachd còd stòr ann an SonarQube do luchd-leasachaidh

A’ parsadh sreang taisbeanaidh nam bràistean:

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

Càite am faigh / thoir sùil air iuchair a’ phròiseict agus id pròiseict.

Tha Project Key aig bonn deas. Anns an URL tha id a’ phròiseict.

A’ taisbeanadh inbhe smachd càileachd còd stòr ann an SonarQube do luchd-leasachaidh

Faodaidh roghainnean a bhith ann airson slatan-tomhais fhaighinn coimhead an seo.

A h-uile iarrtas tarraing airson leasachaidhean, rèiteachadh bug cuir a-steach don stòr seo.

Telegram cabadaich mu SonarQube https://t.me/sonarqube_ru
Còmhradh teileagram mu DevSecOps - DevOps tèarainte https://t.me/sec_devops

Source: www.habr.com

Cuir beachd ann