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/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