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
เจเฉฐเจธเจเจพเจฒเฉเจธเจผเจจ เจฆเฉ เจฆเฉเจฐเจพเจจ, เจเจผเจฟเจเจฆเจพเจคเจฐ เจชเจฒเฉฑเจเจเจจ เจธเจฅเจพเจชเจฟเจค เจเฉเจคเฉ เจเจพเจฃเจเฉ, เจชเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจซเจพเจเจเจกเจฌเฉฑเจเจธ เจ เจคเฉ pmd เจเฉฐเจธเจเจพเจฒ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ
yum install -y sonarqube-findbugs sonarqube-pmd
เจธเฉเจตเจพ เจฒเจพเจเจ เจเจฐเฉ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจธเจเจพเจฐเจเจ เฉฑเจช เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉ
systemctl start sonarqube
systemctl enable sonarqube
เจเฉเจเจฐ เจฒเฉเจก เจนเฉเจฃ เจตเจฟเฉฑเจ เจฒเฉฐเจฎเจพ เจธเจฎเจพเจ เจฒเฉฑเจเจฆเจพ เจนเฉ, เจคเจพเจ เจตเจฟเจเจฒเจชเจพเจ เจฆเฉ เจ เฉฐเจค เจตเจฟเฉฑเจ เจเฉฑเจ เจฌเฉเจคเจฐเจคเฉเจฌ เจจเฉฐเจฌเจฐ เจเจจเจฐเฉเจเจฐ /dev/./urandom เจธเจผเจพเจฎเจฒ เจเจฐเฉ sonar.web.javaOpts
sonar.web.javaOpts=ะดััะณะธะต ะฟะฐัะฐะผะตััั -Djava.security.egd=file:/dev/urandom
SonarQube เจตเจฟเฉฑเจ เจธเจฐเฉเจค เจเฉเจก เจเฉเจฃเจตเฉฑเจคเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจฆเฉ เจธเจฅเจฟเจคเฉ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจธเจเฉเจฐเจฟเจชเจ เจเจฒเจพเจเจฃเจพเฅค
เจฌเจฆเจเจฟเจธเจฎเจคเฉ เจจเจพเจฒ, sonar-break-maven-plugin เจชเจฒเฉฑเจเจเจจ เจจเฉเฉฐ เจฒเฉฐเจฌเฉ เจธเจฎเฉเจ เจคเฉเจ เจ เฉฑเจชเจกเฉเจ เจจเจนเฉเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค เจเจธ เจฒเจ เจเจ เจเจชเจพเจ เจเจชเจฃเฉ เจธเจเฉเจฐเจฟเจชเจ เจฒเจฟเจเฉเจเฅค
เจเจพเจเจ เจฒเจ เจ
เจธเฉเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจพเจเจเฉ
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 เจตเจฟเฉฑเจ เจชเฉเจฐเฉเจเฉเจเจ เจเจ.เจกเฉ. เจธเจผเจพเจฎเจฒ เจนเฉเฅค
เจฎเฉเจเฉเจฐเจฟเจเจธ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ เจตเจฟเจเจฒเจช เจนเฉ เจธเจเจฆเฉ เจนเจจ
เจธเฉเจงเจพเจฐเจพเจ เจฒเจ เจธเจพเจฐเฉเจเจ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉเจเจ, เจฌเฉฑเจ เจซเจฟเจเจธ
SonarQube เจฌเจพเจฐเฉ เจเฉเจฒเฉเจเฉเจฐเจพเจฎ เจเฉเจ
DevSecOps เจฌเจพเจฐเฉ เจเฉเจฒเฉเจเฉเจฐเจพเจฎ เจเฉเจ - เจธเฉเจฐเฉฑเจเจฟเจ
เจค DevOps
เจธเจฐเฉเจค: www.habr.com