ಡೆವಲಪರ್‌ಗಳಿಗೆ SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ

SonarQube ಒಂದು ಓಪನ್ ಸೋರ್ಸ್ ಕೋಡ್ ಗುಣಮಟ್ಟದ ಭರವಸೆ ವೇದಿಕೆಯಾಗಿದ್ದು ಅದು ವ್ಯಾಪಕ ಶ್ರೇಣಿಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ ಮತ್ತು ಕೋಡ್ ನಕಲು, ಕೋಡಿಂಗ್ ಮಾನದಂಡಗಳ ಅನುಸರಣೆ, ಪರೀಕ್ಷಾ ವ್ಯಾಪ್ತಿ, ಕೋಡ್ ಸಂಕೀರ್ಣತೆ, ಸಂಭಾವ್ಯ ದೋಷಗಳು ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳಂತಹ ಮೆಟ್ರಿಕ್‌ಗಳ ಕುರಿತು ವರದಿ ಮಾಡುತ್ತದೆ. SonarQube ಅನುಕೂಲಕರವಾಗಿ ವಿಶ್ಲೇಷಣೆ ಫಲಿತಾಂಶಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಕಾಲಾನಂತರದಲ್ಲಿ ಯೋಜನೆಯ ಅಭಿವೃದ್ಧಿಯ ಡೈನಾಮಿಕ್ಸ್ ಅನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಉದ್ದೇಶ: SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣದ ಸ್ಥಿತಿಯನ್ನು ಡೆವಲಪರ್‌ಗಳಿಗೆ ತೋರಿಸಿ.

ಎರಡು ಪರಿಹಾರಗಳಿವೆ:

  • SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡಿ. SonarQube ನಲ್ಲಿನ ಮೂಲ ಕೋಡ್‌ನ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣವು ಹಾದುಹೋಗದಿದ್ದರೆ, ಅಸೆಂಬ್ಲಿ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ.
  • ಮುಖ್ಯ ಪ್ರಾಜೆಕ್ಟ್ ಪುಟದಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ತೋರಿಸಿ.

SonarQube ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ

rpm ಪ್ಯಾಕೇಜುಗಳಿಂದ sonarqube ಅನ್ನು ಸ್ಥಾಪಿಸಲು, ನಾವು ರೆಪೊಸಿಟರಿಯನ್ನು ಬಳಸುತ್ತೇವೆ https://harbottle.gitlab.io/harbottle-main.

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 ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣದ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡಲಾಗುತ್ತಿದೆ.

ದುರದೃಷ್ಟವಶಾತ್, ಸೋನಾರ್-ಬ್ರೇಕ್-ಮಾವೆನ್-ಪ್ಲಗಿನ್ ಪ್ಲಗಿನ್ ಅನ್ನು ದೀರ್ಘಕಾಲದವರೆಗೆ ನವೀಕರಿಸಲಾಗಿಲ್ಲ. ಹಾಗಾಗಿ ನಮ್ಮದೇ ಸ್ಕ್ರಿಪ್ಟ್ ಬರೆಯೋಣ.

ಪರೀಕ್ಷೆಗಾಗಿ ನಾವು ರೆಪೊಸಿಟರಿಯನ್ನು ಬಳಸುತ್ತೇವೆ https://github.com/uweplonus/spotbugs-examples.

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

ನಾವು ಸೋನಾರ್‌ಕ್ಯೂಬ್‌ಗೆ ಹೋಗುತ್ತೇವೆ http://172.26.9.115:9000/
ಸಾಮಾನ್ಯ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಿ, ಉದಾಹರಣೆಗೆ "ಬ್ಯಾಡ್ಜ್‌ಗಳು".
ಈ ಬಳಕೆದಾರರ ಅಡಿಯಲ್ಲಿ SonarQube ಗೆ ಲಾಗ್ ಇನ್ ಮಾಡಿ.

ಡೆವಲಪರ್‌ಗಳಿಗೆ SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ

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

ಡೆವಲಪರ್‌ಗಳಿಗೆ SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ

ಟೋಕನ್ ಕಾಣಿಸಿಕೊಂಡಿರುವುದನ್ನು ನಾವು ನೋಡುತ್ತೇವೆ. ಅವರು ಕೇವಲ 1 ಬಾರಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತಾರೆ.

ನಿರ್ವಾಹಕರಾಗಿ ಲಾಗಿನ್ ಮಾಡಿ.

ಕಾನ್ಫಿಗರೇಶನ್ -> SVG ಬ್ಯಾಡ್ಜ್‌ಗಳಿಗೆ ಹೋಗಿ

ಡೆವಲಪರ್‌ಗಳಿಗೆ SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ

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

ಡೆವಲಪರ್‌ಗಳಿಗೆ SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ

ಆಡಳಿತ -> ಭದ್ರತೆ -> ಅನುಮತಿ ಟೆಂಪ್ಲೇಟ್‌ಗಳು -> ಡೀಫಾಲ್ಟ್ ಟೆಂಪ್ಲೇಟ್ (ಮತ್ತು ನೀವು ಹೊಂದಿರುವ ಇತರ ಟೆಂಪ್ಲೇಟ್‌ಗಳು) ಗೆ ಹೋಗಿ.

ಬ್ಯಾಡ್ಜ್‌ಗಳ ಬಳಕೆದಾರರು "ಬ್ರೌಸ್" ಚೆಕ್‌ಬಾಕ್ಸ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿರಬೇಕು.

ಪರೀಕ್ಷೆ.

ಉದಾಹರಣೆಗೆ, ಯೋಜನೆಯನ್ನು ತೆಗೆದುಕೊಳ್ಳೋಣ https://github.com/jitpack/maven-simple.

ಈ ಯೋಜನೆಯನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳೋಣ.

ಕೆಳಗಿನ ವಿಷಯದೊಂದಿಗೆ ಪ್ರಾಜೆಕ್ಟ್ ರೂಟ್‌ಗೆ .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 ನಲ್ಲಿ ಯೋಜನೆಯು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

ಡೆವಲಪರ್‌ಗಳಿಗೆ SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ

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

ಡೆವಲಪರ್‌ಗಳಿಗೆ SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ

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

ಡೆವಲಪರ್‌ಗಳಿಗೆ SonarQube ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ

ಬ್ಯಾಡ್ಜ್‌ಗಳ ಪ್ರದರ್ಶನ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಪಾರ್ಸಿಂಗ್ ಮಾಡುವುದು:

[![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 ನಲ್ಲಿ ಮೂಲ ಕೋಡ್ ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ ಸ್ಥಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ

ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ಪಡೆಯುವ ಆಯ್ಕೆಗಳು ಆಗಿರಬಹುದು ಇಲ್ಲಿ ನೋಡಿ.

ಸುಧಾರಣೆಗಳು, ದೋಷ ಪರಿಹಾರಗಳಿಗಾಗಿ ಎಲ್ಲಾ ಪುಲ್ ವಿನಂತಿಗಳು ಈ ಭಂಡಾರಕ್ಕೆ ಸಲ್ಲಿಸಿ.

SonarQube ಕುರಿತು ಟೆಲಿಗ್ರಾಮ್ ಚಾಟ್ https://t.me/sonarqube_ru
DevSecOps ಕುರಿತು ಟೆಲಿಗ್ರಾಮ್ ಚಾಟ್ - ಸುರಕ್ಷಿತ DevOps https://t.me/sec_devops

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ