SonarQube ಒಂದು ಓಪನ್ ಸೋರ್ಸ್ ಕೋಡ್ ಗುಣಮಟ್ಟದ ಭರವಸೆ ವೇದಿಕೆಯಾಗಿದ್ದು ಅದು ವ್ಯಾಪಕ ಶ್ರೇಣಿಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ ಮತ್ತು ಕೋಡ್ ನಕಲು, ಕೋಡಿಂಗ್ ಮಾನದಂಡಗಳ ಅನುಸರಣೆ, ಪರೀಕ್ಷಾ ವ್ಯಾಪ್ತಿ, ಕೋಡ್ ಸಂಕೀರ್ಣತೆ, ಸಂಭಾವ್ಯ ದೋಷಗಳು ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳಂತಹ ಮೆಟ್ರಿಕ್ಗಳ ಕುರಿತು ವರದಿ ಮಾಡುತ್ತದೆ. SonarQube ಅನುಕೂಲಕರವಾಗಿ ವಿಶ್ಲೇಷಣೆ ಫಲಿತಾಂಶಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಕಾಲಾನಂತರದಲ್ಲಿ ಯೋಜನೆಯ ಅಭಿವೃದ್ಧಿಯ ಡೈನಾಮಿಕ್ಸ್ ಅನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
ಉದ್ದೇಶ: SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣದ ಸ್ಥಿತಿಯನ್ನು ಡೆವಲಪರ್ಗಳಿಗೆ ತೋರಿಸಿ.
ಎರಡು ಪರಿಹಾರಗಳಿವೆ:
- SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡಿ. SonarQube ನಲ್ಲಿನ ಮೂಲ ಕೋಡ್ನ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣವು ಹಾದುಹೋಗದಿದ್ದರೆ, ಅಸೆಂಬ್ಲಿ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ.
- ಮುಖ್ಯ ಪ್ರಾಜೆಕ್ಟ್ ಪುಟದಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ತೋರಿಸಿ.
SonarQube ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ
rpm ಪ್ಯಾಕೇಜುಗಳಿಂದ sonarqube ಅನ್ನು ಸ್ಥಾಪಿಸಲು, ನಾವು ರೆಪೊಸಿಟರಿಯನ್ನು ಬಳಸುತ್ತೇವೆ .
CentOS 7 ಗಾಗಿ ರೆಪೊಸಿಟರಿಯೊಂದಿಗೆ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಸ್ಥಾಪಿಸೋಣ.
yum install -y https://harbottle.gitlab.io/harbottle-main/7/x86_64/harbottle-main-release.rpmನಾವು ಸೋನಾರ್ಕ್ಯೂಬ್ ಅನ್ನು ಸ್ಥಾಪಿಸುತ್ತೇವೆ.
yum install -y sonarqubeಅನುಸ್ಥಾಪನೆಯ ಸಮಯದಲ್ಲಿ, ಹೆಚ್ಚಿನ ಪ್ಲಗಿನ್ಗಳನ್ನು ಸ್ಥಾಪಿಸಲಾಗುವುದು, ಆದರೆ ನೀವು findbugs ಮತ್ತು pmd ಅನ್ನು ಸ್ಥಾಪಿಸಬೇಕಾಗುತ್ತದೆ
yum install -y sonarqube-findbugs sonarqube-pmdಸೇವೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಅದನ್ನು ಪ್ರಾರಂಭಕ್ಕೆ ಸೇರಿಸಿ
systemctl start sonarqube
systemctl enable sonarqubeಲೋಡ್ ಆಗಲು ಬಹಳ ಸಮಯ ತೆಗೆದುಕೊಂಡರೆ, sonar.web.javaOpts ಆಯ್ಕೆಗಳ ಅಂತ್ಯಕ್ಕೆ ಯಾದೃಚ್ಛಿಕ ಸಂಖ್ಯೆಯ ಜನರೇಟರ್ /dev/./urandom ಅನ್ನು ಸೇರಿಸಿ
sonar.web.javaOpts=другие параметры -Djava.security.egd=file:/dev/urandomSonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣದ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡಲಾಗುತ್ತಿದೆ.
ದುರದೃಷ್ಟವಶಾತ್, ಸೋನಾರ್-ಬ್ರೇಕ್-ಮಾವೆನ್-ಪ್ಲಗಿನ್ ಪ್ಲಗಿನ್ ಅನ್ನು ದೀರ್ಘಕಾಲದವರೆಗೆ ನವೀಕರಿಸಲಾಗಿಲ್ಲ. ಹಾಗಾಗಿ ನಮ್ಮದೇ ಸ್ಕ್ರಿಪ್ಟ್ ಬರೆಯೋಣ.
ಪರೀಕ್ಷೆಗಾಗಿ ನಾವು ರೆಪೊಸಿಟರಿಯನ್ನು ಬಳಸುತ್ತೇವೆ .
Gitlab ಗೆ ಆಮದು ಮಾಡಿಕೊಳ್ಳಲಾಗುತ್ತಿದೆ. .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.gitlab-ci.yml ಫೈಲ್ ಪರಿಪೂರ್ಣವಾಗಿಲ್ಲ. ಸೋನಾರ್ಕ್ಯೂಬ್ನಲ್ಲಿ ಸ್ಕ್ಯಾನಿಂಗ್ ಕಾರ್ಯಗಳು ಸ್ಥಿತಿಯೊಂದಿಗೆ ಕೊನೆಗೊಂಡಿದ್ದರೆ ಪರೀಕ್ಷಿಸಲಾಗಿದೆ: "ಯಶಸ್ಸು". ಇಲ್ಲಿಯವರೆಗೆ ಬೇರೆ ಯಾವುದೇ ಸ್ಥಾನಮಾನಗಳಿಲ್ಲ. ಇತರ ಸ್ಟೇಟಸ್ಗಳು ಇದ್ದ ತಕ್ಷಣ, ನಾನು ಈ ಪೋಸ್ಟ್ನಲ್ಲಿ .gitlab-ci.yml ಅನ್ನು ಸರಿಪಡಿಸುತ್ತೇನೆ.
ಮುಖ್ಯ ಪ್ರಾಜೆಕ್ಟ್ ಪುಟದಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ
SonarQube ಗಾಗಿ ಪ್ಲಗಿನ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ
yum install -y sonarqube-qualinsight-badgesನಾವು ಸೋನಾರ್ಕ್ಯೂಬ್ಗೆ ಹೋಗುತ್ತೇವೆ
ಸಾಮಾನ್ಯ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಿ, ಉದಾಹರಣೆಗೆ "ಬ್ಯಾಡ್ಜ್ಗಳು".
ಈ ಬಳಕೆದಾರರ ಅಡಿಯಲ್ಲಿ SonarQube ಗೆ ಲಾಗ್ ಇನ್ ಮಾಡಿ.

"ನನ್ನ ಖಾತೆ" ಗೆ ಹೋಗಿ, ಹೊಸ ಟೋಕನ್ ಅನ್ನು ರಚಿಸಿ, ಉದಾಹರಣೆಗೆ "read_all_repository" ಹೆಸರಿನೊಂದಿಗೆ ಮತ್ತು "Genereate" ಕ್ಲಿಕ್ ಮಾಡಿ.

ಟೋಕನ್ ಕಾಣಿಸಿಕೊಂಡಿರುವುದನ್ನು ನಾವು ನೋಡುತ್ತೇವೆ. ಅವರು ಕೇವಲ 1 ಬಾರಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತಾರೆ.
ನಿರ್ವಾಹಕರಾಗಿ ಲಾಗಿನ್ ಮಾಡಿ.
ಕಾನ್ಫಿಗರೇಶನ್ -> SVG ಬ್ಯಾಡ್ಜ್ಗಳಿಗೆ ಹೋಗಿ

ಈ ಟೋಕನ್ ಅನ್ನು "ಚಟುವಟಿಕೆ ಬ್ಯಾಡ್ಜ್ ಟೋಕನ್" ಕ್ಷೇತ್ರಕ್ಕೆ ನಕಲಿಸಿ ಮತ್ತು ಉಳಿಸು ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ.

ಆಡಳಿತ -> ಭದ್ರತೆ -> ಅನುಮತಿ ಟೆಂಪ್ಲೇಟ್ಗಳು -> ಡೀಫಾಲ್ಟ್ ಟೆಂಪ್ಲೇಟ್ (ಮತ್ತು ನೀವು ಹೊಂದಿರುವ ಇತರ ಟೆಂಪ್ಲೇಟ್ಗಳು) ಗೆ ಹೋಗಿ.
ಬ್ಯಾಡ್ಜ್ಗಳ ಬಳಕೆದಾರರು "ಬ್ರೌಸ್" ಚೆಕ್ಬಾಕ್ಸ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿರಬೇಕು.
ಪರೀಕ್ಷೆ.
ಉದಾಹರಣೆಗೆ, ಯೋಜನೆಯನ್ನು ತೆಗೆದುಕೊಳ್ಳೋಣ .
ಈ ಯೋಜನೆಯನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳೋಣ.
ಕೆಳಗಿನ ವಿಷಯದೊಂದಿಗೆ ಪ್ರಾಜೆಕ್ಟ್ ರೂಟ್ಗೆ .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.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:
- dockerSonarQube ನಲ್ಲಿ ಯೋಜನೆಯು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

README.md ಗೆ ಬ್ಯಾಗ್ಗಳನ್ನು ಸೇರಿಸಿ ಮತ್ತು ಅವು ಈ ರೀತಿ ಕಾಣುತ್ತವೆ:

ಬ್ಯಾಡ್ಜ್ಗಳ ಪ್ರದರ್ಶನ ಕೋಡ್ ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

ಬ್ಯಾಡ್ಜ್ಗಳ ಪ್ರದರ್ಶನ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಪಾರ್ಸಿಂಗ್ ಮಾಡುವುದು:
[](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-проекта)ಪ್ರಾಜೆಕ್ಟ್ ಕೀ ಮತ್ತು ಪ್ರಾಜೆಕ್ಟ್ ಐಡಿಯನ್ನು ಎಲ್ಲಿ ಪಡೆಯಬೇಕು/ಪರಿಶೀಲಿಸಬೇಕು.
ಪ್ರಾಜೆಕ್ಟ್ ಕೀ ಕೆಳಗಿನ ಬಲಭಾಗದಲ್ಲಿದೆ. URL ಪ್ರಾಜೆಕ್ಟ್ ಐಡಿಯನ್ನು ಒಳಗೊಂಡಿದೆ.

ಮೆಟ್ರಿಕ್ಗಳನ್ನು ಪಡೆಯುವ ಆಯ್ಕೆಗಳು ಆಗಿರಬಹುದು .
ಸುಧಾರಣೆಗಳು, ದೋಷ ಪರಿಹಾರಗಳಿಗಾಗಿ ಎಲ್ಲಾ ಪುಲ್ ವಿನಂತಿಗಳು .
SonarQube ಕುರಿತು ಟೆಲಿಗ್ರಾಮ್ ಚಾಟ್
DevSecOps ಕುರಿತು ಟೆಲಿಗ್ರಾಮ್ ಚಾಟ್ - ಸುರಕ್ಷಿತ DevOps
ಮೂಲ: www.habr.com
