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
நாங்கள் sonarqube ஐ நிறுவுகிறோம்.
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/urandom
SonarQube இல் மூலக் குறியீடு தரக் கட்டுப்பாட்டின் நிலையைச் சரிபார்க்க ஸ்கிரிப்டை இயக்குகிறது.
துரதிருஷ்டவசமாக, sonar-break-maven-plugin செருகுநிரல் நீண்ட காலமாக புதுப்பிக்கப்படவில்லை. எனவே சொந்த ஸ்கிரிப்டை எழுதுவோம்.
சோதனைக்கு களஞ்சியத்தைப் பயன்படுத்துவோம்
கிட்லாப்பில் இறக்குமதி செய்கிறது. .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 கோப்பு சரியாக இல்லை. Sonarqube இல் ஸ்கேன் செய்யும் பணிகள் "வெற்றி" என்ற நிலையில் முடிந்ததா என சோதிக்கப்பட்டது. இதுவரை வேறு எந்த நிலையும் இல்லை. மற்ற நிலைகள் இருந்தால், இந்த இடுகையில் .gitlab-ci.yml ஐ சரிசெய்கிறேன்.
முதன்மை திட்டப் பக்கத்தில் மூலக் குறியீடு தரக் கட்டுப்பாட்டு நிலையைக் காட்டுகிறது
SonarQube க்கான செருகுநிரலை நிறுவுகிறது
yum install -y sonarqube-qualinsight-badges
நாம் SonarQube இல் செல்கிறோம்
வழக்கமான பயனரை உருவாக்கவும், உதாரணமாக "பேட்ஜ்கள்".
இந்த பயனரின் கீழ் 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:
- docker
SonarQube இல் திட்டம் இப்படி இருக்கும்:
README.md இல் பைகளைச் சேர்க்கவும், அவை இப்படி இருக்கும்:
பேட்ஜ்களின் காட்சி குறியீடு இதுபோல் தெரிகிறது:
பேட்ஜ் காட்சி சரத்தை பாகுபடுத்துதல்:
[![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-проекта)
திட்ட விசை மற்றும் திட்ட ஐடியை எங்கு பெறுவது/சரிபார்ப்பது.
திட்ட விசை கீழ் வலதுபுறத்தில் உள்ளது. URL திட்ட ஐடியைக் கொண்டுள்ளது.
அளவீடுகளைப் பெறுவதற்கான விருப்பங்கள் இருக்கலாம்
மேம்பாடுகள், பிழை திருத்தங்களுக்கான அனைத்து இழுக்கும் கோரிக்கைகள்
SonarQube பற்றிய டெலிகிராம் அரட்டை
DevSecOps பற்றிய டெலிகிராம் அரட்டை - பாதுகாப்பான DevOps
ஆதாரம்: www.habr.com