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

අපි 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 ප්ලගිනය දිගු කාලයක් යාවත්කාලීන කර නොමැත. ඉතින් අපි අපේම පිටපතක් ලියමු.

පරීක්ෂා කිරීම සඳහා අපි ගබඩාව භාවිතා කරමු 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 ගොනුව පරිපූර්ණ නොවේ. Sonarqube හි ස්කෑන් කිරීමේ කාර්යයන් "සාර්ථකත්වය" යන තත්ත්‍වයෙන් අවසන් වූයේ දැයි පරීක්ෂා කරන ලදී. මෙතෙක් වෙනත් තත්වයන් නොමැත. අනිත් ස්ටේටස් තියෙන ගමන් මම මේ පෝස්ට් එකෙන් .gitlab-ci.yml නිවැරදි කරන්නම්.

ප්‍රධාන ව්‍යාපෘති පිටුවේ ප්‍රභව කේත තත්ත්ව පාලන තත්ත්වය සංදර්ශන කිරීම

SonarQube සඳහා ප්ලගිනය ස්ථාපනය කිරීම

yum install -y sonarqube-qualinsight-badges

අපි SonarQube වෙත යන්නෙමු http://172.26.9.115:9000/
නිත්‍ය පරිශීලකයෙකු සාදන්න, උදාහරණයක් ලෙස "ලාංඡන".
මෙම පරිශීලකයා යටතේ SonarQube වෙත ලොග් වන්න.

SonarQube හි ප්‍රභව කේත තත්ත්ව පාලන තත්ත්‍වය සංවර්ධකයන්ට සංදර්ශන කිරීම

"මගේ ගිණුම" වෙත යන්න, නව ටෝකනයක් සාදන්න, උදාහරණයක් ලෙස "read_all_repository" යන නම සමඟින් "උත්පාදනය" ක්ලික් කරන්න.

SonarQube හි ප්‍රභව කේත තත්ත්ව පාලන තත්ත්‍වය සංවර්ධකයන්ට සංදර්ශන කිරීම

ටෝකනයක් දර්ශනය වී ඇති බව අපට පෙනේ. ඔහු පෙනී සිටින්නේ 1 වතාවක් පමණි.

පරිපාලක ලෙස ලොග් වන්න.

Configuration -> SVG Badges වෙත යන්න

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 ගැන Telegram කතාබස් https://t.me/sonarqube_ru
DevSecOps ගැන Telegram කතාබස් - ආරක්ෂිත DevOps https://t.me/sec_devops

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න