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 .
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.rpmOns installeer sonarqube self.
yum install -y sonarqubeTydens installasie sal die meeste inproppe geïnstalleer word, maar jy moet findbugs en pmd installeer
yum install -y sonarqube-findbugs sonarqube-pmdBegin die diens en voeg dit by opstart
systemctl start sonarqube
systemctl enable sonarqubeAs 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/urandomBegin '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 .
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:
- dockerDie .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-badgesOns gaan na SonarQube by
Skep 'n gewone gebruiker, byvoorbeeld "kentekens".
Meld aan by SonarQube onder hierdie gebruiker.

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

Ons sien dat 'n teken verskyn het. Hy sal slegs 1 keer verskyn.
Teken in as administrateur.
Gaan na Configuration -> SVG Badges

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

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 .
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:
- dockerIn SonarQube sal die projek soos volg lyk:

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

Die kentekens vertoon kode lyk soos volg:

Ontleding van die kentekens vertoonstring:
[](http://172.26.9.115:9000/dashboard?id=com.github.jitpack%3Amaven-simple)
[](http://172.26.9.115:9000/dashboard?id=id-проекта)
[](http://172.26.9.115:9000/dashboard?id=com.github.jitpack%3Amaven-simple)
[](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.

Opsies vir die verkryging van statistieke kan wees .
Alle trekversoeke vir verbeterings, foutoplossings .
Telegramklets oor SonarQube
Telegram-klets oor DevSecOps - veilige DevOps
Bron: will.com
