SonarQube เชเช เชเชชเชจ เชธเซเชฐเซเชธ เชเซเชก เชเซเชฃเชตเชคเซเชคเชพ เชเชพเชคเชฐเซ เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชเซ เชเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฟเชเช เชญเชพเชทเชพเชเชจเซ เชตเชฟเชถเชพเชณ เชถเซเชฐเซเชฃเซเชจเซ เชธเชฎเชฐเซเชฅเชจ เชเชชเซ เชเซ เช เชจเซ เชเซเชก เชกเซเชชเซเชฒเชฟเชเซเชถเชจ, เชเซเชกเชฟเชเช เชงเซเชฐเชฃเซเชจเซเช เชชเชพเชฒเชจ, เชชเชฐเซเชเซเชทเชฃ เชเชตเชฐเซเช, เชเซเชก เชเชเชฟเชฒเชคเชพ, เชธเชเชญเชตเชฟเชค เชญเซเชฒเซ เช เชจเซ เชตเชงเซ เชเซเชตเชพ เชฎเซเชเซเชฐเชฟเชเซเชธ เชชเชฐ เชฐเชฟเชชเซเชฐเซเชเชฟเชเช เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ. SonarQube เชธเชฐเชณเชคเชพเชฅเซ เชตเชฟเชถเซเชฒเซเชทเชฃ เชชเชฐเชฟเชฃเชพเชฎเซเชจเซ เชเชฒเซเชชเชจเชพ เชเชฐเซ เชเซ เช เชจเซ เชคเชฎเชจเซ เชธเชฎเชฏเชพเชเชคเชฐเซ เชชเซเชฐเซเชเซเชเซเช เชตเชฟเชเชพเชธเชจเซ เชเชคเชฟเชถเซเชฒเชคเชพเชจเซ เชเซเชฐเซ เช เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
เชเชฆเซเชฆเซเชถเซเชฏ: เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเชเชจเซ SonarQube เชฎเชพเช เชธเซเชคเซเชฐเซเชค เชเซเชก เชเซเชฃเชตเชคเซเชคเชพ เชจเชฟเชฏเชเชคเซเชฐเชฃเชจเซ เชธเซเชฅเชฟเชคเชฟ เชฌเชคเชพเชตเซ.
เชคเซเชฏเชพเช เชฌเซ เชเชเซเชฒเซ เชเซ:
- SonarQube เชฎเชพเช เชธเซเชคเซเชฐเซเชค เชเซเชก เชเซเชฃเชตเชคเซเชคเชพ เชจเชฟเชฏเชเชคเซเชฐเชฃ เชธเซเชฅเชฟเชคเชฟ เชคเชชเชพเชธเชตเชพ เชฎเชพเชเซ เชธเซเชเซเชฐเชฟเชชเซเช เชเชฒเชพเชตเซ. เชเซ SonarQube เชฎเชพเช เชธเซเชฐเซเชธ เชเซเชกเชจเซเช เชเซเชฃเชตเชคเซเชคเชพ เชจเชฟเชฏเชเชคเซเชฐเชฃ เชชเชธเชพเชฐ เชฅเชคเซเช เชจเชฅเซ, เชคเซ เชชเชเซ เชเชธเซเชฎเซเชฌเชฒเซเชจเซ เชจเชฟเชทเซเชซเชณ เชเชฐเซ.
- เชฎเซเชเซเชฏ เชชเซเชฐเซเชเซเชเซเช เชชเซเชทเซเช เชชเชฐ เชธเซเชฐเซเชค เชเซเชก เชเซเชฃเชตเชคเซเชคเชพ เชจเชฟเชฏเชเชคเซเชฐเชฃ เชธเซเชฅเชฟเชคเชฟ เชฌเชคเชพเชตเซ.
SonarQube เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เชเชฐเชชเซเชเชฎ เชชเซเชเซเชเซเชฎเชพเชเชฅเซ เชธเซเชจเชพเชฐเซเชเซเชฏเซเชฌ เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ, เช
เชฎเซ เชฐเซเชชเซเชเซเชเชฐเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช
เชเชพเชฒเซ CentOS 7 เชฎเชพเชเซ เชฐเซเชชเซเชเซเชเชฐเซ เชธเชพเชฅเซ เชชเซเชเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเช.
yum install -y https://harbottle.gitlab.io/harbottle-main/7/x86_64/harbottle-main-release.rpm
เช เชฎเซ เชธเซเชจเชพเชฐเซเชเซเชฏเซเชฌ เชชเซเชคเซ เช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเช เชเซเช.
yum install -y sonarqube
เชเชจเซเชธเซเชเซเชฒเซเชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชฎเซเชเชพเชญเชพเชเชจเชพ เชชเซเชฒเชเชเชจเซเชธ เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ, เชชเชฐเชเชคเซ เชคเชฎเชพเชฐเซ เชซเชพเชเชจเซเชกเชฌเชเซเชธ เช เชจเซ เชชเซเชเชฎเชกเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ
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 เชฎเชพเช เชธเซเชฐเซเชธ เชเซเชก เชเซเชฃเชตเชคเซเชคเชพ เชจเชฟเชฏเชเชคเซเชฐเชฃเชจเซ เชธเซเชฅเชฟเชคเชฟ เชคเชชเชพเชธเชตเชพ เชฎเชพเชเซ เชธเซเชเซเชฐเชฟเชชเซเช เชเชฒเชพเชตเชตเซ.
เชเชฎเชจเชธเซเชฌเซ, เชธเซเชจเชพเชฐ-เชฌเซเชฐเซเช-เชฎเชพเชตเซเชจ-เชชเซเชฒเชเชเชจ เชชเซเชฒเชเชเชจ เชฒเชพเชเชฌเชพ เชธเชฎเชฏเชฅเซ เช เชชเชกเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชจเชฅเซ. เชคเซ เชเชพเชฒเซ เชเชชเชฃเซ เชชเซเชคเชพเชจเซ เชธเซเชเซเชฐเชฟเชชเซเช เชฒเชเซเช.
เชชเชฐเซเชเซเชทเชฃ เชฎเชพเชเซ เช
เชฎเซ เชฐเซเชชเซเชเซเชเชฐเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช
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 เชเชพเชคเซ เชเชเช เชเซเช
เชจเชฟเชฏเชฎเชฟเชค เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชฌเชจเชพเชตเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ "เชฌเซเช".
เช เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชนเซเช เชณ SonarQube เชฎเชพเช เชฒเซเช เชเชจ เชเชฐเซ.
"เชฎเชพเชฐเซเช เชเชเชพเชเชจเซเช" เชชเชฐ เชเชพเช, เชจเชตเซเช เชเซเชเชจ เชฌเชจเชพเชตเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ "read_all_repository" เชจเชพเชฎ เชธเชพเชฅเซ เช เชจเซ "เชเชจเชฐเซเช เชเชฐเซ" เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ.
เชเชชเชฃเซ เชเซเชเช เชเซเช เชเซ เชเช เชเซเชเชจ เชฆเซเชเชพเชฏเซเช เชเซ. เชคเซ เชฎเชพเชคเซเชฐ 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 เชฎเชพเช เชชเซเชฐเซเชเซเชเซเช id เชเซ.
เชฎเซเชเซเชฐเชฟเชเซเชธ เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซเชจเชพ เชตเชฟเชเชฒเซเชชเซ เชนเซเช เชถเชเซ เชเซ
เชธเซเชงเชพเชฐเชพเช, เชฌเช เชซเชฟเชเซเชธเซเชธ เชฎเชพเชเซ เชคเชฎเชพเชฎ เชชเซเชฒ เชตเชฟเชจเชเชคเซเช
SonarQube เชตเชฟเชถเซ เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชเซเช
DevSecOps เชตเชฟเชถเซ เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชเซเช - เชธเซเชฐเชเซเชทเชฟเชค DevOps
เชธเซเชฐเซเชธ: www.habr.com