ื•ื•ื™ื™ึทื–ื ื“ื™ืง ืžืงื•ืจ ืงืึธื“ ืงื•ื•ืึทืœื™ื˜ืขื˜ ืงืึธื ื˜ืจืึธืœ ืกื˜ืึทื˜ื•ืก ืื™ืŸ SonarQube ืฆื• ื“ืขื•ื•ืขืœืึธืคึผืขืจืก

SonarQube ืื™ื– ืึทืŸ ืึธืคึฟืŸ ืžืงื•ืจ ืงืึธื“ ืงื•ื•ืึทืœื™ื˜ืขื˜ ืคืืจื–ื™ื›ืขืจื•ื ื’ ืคึผืœืึทื˜ืคืึธืจืžืข ื•ื•ืึธืก ืฉื˜ื™ืฆื˜ ืึท ื‘ืจื™ื™ื˜ ืงื™ื™ื˜ ืคื•ืŸ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคืจืึทื›ืŸ ืื•ืŸ ื’ื™ื˜ ืจืขืคึผืึธืจื˜ื™ื ื’ ืื•ื™ืฃ ืžืขื˜ืจื™ืงืก ืึทื–ืึท ื•ื•ื™ ืงืึธื“ ื“ื•ืคึผืœื™ืงื™ื™ืฉืึทืŸ, ืงืึธื•ื“ื™ื ื’ ืกื˜ืึทื ื“ืึทืจื“ืก ื”ืขืกืงืขื, ืคึผืจื•ื‘ื™ืจืŸ ืงืึทื•ื•ืขืจื™ื“ื–ืฉ, ืงืึธื“ ืงืึทืžืคึผืœืขืงืกื™ื˜ื™, ืคึผืึธื˜ืขื ืฆื™ืขืœ ื‘ืึทื’ื–, ืื•ืŸ ืžืขืจ. SonarQube ื•ื•ื™ื–ืฉื•ื•ืึทืœื– ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืึทื ืึทืœื™ืกื™ืก ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืื•ืŸ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืฉืคึผื•ืจ ื“ื™ ื“ื™ื ืึทืžื™ืง ืคื•ืŸ ืคึผืจื•ื™ืขืงื˜ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื™ื‘ืขืจ ืฆื™ื™ื˜.

ืึธื‘ื™ืขืงื˜ื™ื•ื•: ื•ื•ื™ื™ึทื–ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื“ื™ ืกื˜ืึทื˜ื•ืก ืคื•ืŸ ืžืงื•ืจ ืงืึธื“ ืงื•ื•ืึทืœื™ื˜ืขื˜ ืงืึธื ื˜ืจืึธืœ ืื™ืŸ SonarQube.

ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ืกืึทืœื•ืฉืึทื ื–:

  • ืœื•ื™ืคืŸ ืึท ืฉืจื™ืคื˜ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืžืงื•ืจ ืงืึธื“ ืงื•ื•ืึทืœื™ื˜ืขื˜ ืงืึธื ื˜ืจืึธืœ ืกื˜ืึทื˜ื•ืก ืื™ืŸ SonarQube. ืื•ื™ื‘ ื“ื™ ืงื•ื•ืึทืœื™ื˜ืขื˜ ืงืึธื ื˜ืจืึธืœ ืคื•ืŸ ื“ื™ ืžืงื•ืจ ืงืึธื“ ืื™ืŸ SonarQube ืื™ื– ื ื™ืฉื˜ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ, ื“ืขืžืึธืœื˜ ืคืึทืจืœืึธื–ืŸ ื“ื™ ืคึฟืึทืจื–ืึทืžืœื•ื ื’.
  • ื•ื•ื™ื™ึทื–ืŸ ืžืงื•ืจ ืงืึธื“ ืงื•ื•ืึทืœื™ื˜ืขื˜ ืงืึธื ื˜ืจืึธืœ ืกื˜ืึทื˜ื•ืก ืื•ื™ืฃ ื“ื™ ื”ื•ื™ืคึผื˜ ืคึผืจื•ื™ืขืงื˜ ื‘ืœืึทื˜.

ื™ื ืกื˜ืึธืœื™ื ื’ SonarQube

ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ 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

ืื•ื™ื‘ ืขืก ื ืขืžื˜ ืึท ืœืึทื ื’ ืฆื™ื™ึทื˜ ืฆื• ืžืึทืกืข, ืœื™ื™ื’ืŸ ืึท ื˜ืจืึทืค - ื ื•ืžืขืจ ื’ืขื ืขืจืึทื˜ืึธืจ /dev/./urandom ืฆื• ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ื™ ืึธืคึผืฆื™ืขืก sonar.web.javaOpts

sonar.web.javaOpts=ะดั€ัƒะณะธะต ะฟะฐั€ะฐะผะตั‚ั€ั‹ -Djava.security.egd=file:/dev/urandom

ืœื•ื™ืคืŸ ืึท ืฉืจื™ืคื˜ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืกื˜ืึทื˜ื•ืก ืคื•ืŸ ืžืงื•ืจ ืงืึธื“ ืงื•ื•ืึทืœื™ื˜ืขื˜ ืงืึธื ื˜ืจืึธืœ ืื™ืŸ SonarQube.

ืฆื•ื ื‘ืึทื“ื•ื™ืขืจืŸ, ื“ื™ Sonar-break-maven-plugin ืคึผืœื•ื’ื™ืŸ ืื™ื– ื ื™ืฉื˜ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ืคึฟืึทืจ ืึท ืœืึทื ื’ ืฆื™ื™ึทื˜. ืึทื–ื•ื™ ืœืึธืžื™ืจ ืฉืจืฒึทื‘ืŸ ืื•ื ื“ื–ืขืจ ืื™ื™ื’ืขื ืขื ืฉืจื™ืคึฟื˜.

ืคึฟืึทืจ ื˜ืขืกื˜ื™ื ื’ ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ https://github.com/uweplonus/spotbugs-examples.

ื™ืžืคึผืึธืจื˜ื™ื ื’ ืื™ืŸ ื’ื™ื˜ืœืึทื‘. ืœื™ื™ื’ ื“ื™ .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 ืื™ืŸ http://172.26.9.115:9000/
ืฉืึทืคึฟืŸ ืึท ืจืขื’ื•ืœืขืจ ื‘ืึทื ื™ืฆืขืจ, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ "ื‘ืึทื“ื–ืฉื™ื–".
ืงืœืึธืฅ ืื™ืŸ ืฆื• SonarQube ืื•ื ื˜ืขืจ ื“ืขื ื‘ืึทื ื™ืฆืขืจ.

ื•ื•ื™ื™ึทื–ื ื“ื™ืง ืžืงื•ืจ ืงืึธื“ ืงื•ื•ืึทืœื™ื˜ืขื˜ ืงืึธื ื˜ืจืึธืœ ืกื˜ืึทื˜ื•ืก ืื™ืŸ SonarQube ืฆื• ื“ืขื•ื•ืขืœืึธืคึผืขืจืก

ื’ื™ื™ืŸ ืฆื• "ืžื™ื™ึทืŸ ื—ืฉื‘ื•ืŸ", ืฉืึทืคึฟืŸ ืึท ื ื™ื™ึท ืกื™ืžืขืŸ, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ ืžื™ื˜ ื“ื™ ื ืึธืžืขืŸ "read_all_repository" ืื•ืŸ ื’ื™ื˜ "ื’ืขื ืขืจืึทื˜ืข".

ื•ื•ื™ื™ึทื–ื ื“ื™ืง ืžืงื•ืจ ืงืึธื“ ืงื•ื•ืึทืœื™ื˜ืขื˜ ืงืึธื ื˜ืจืึธืœ ืกื˜ืึทื˜ื•ืก ืื™ืŸ 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-ะฟั€ะพะตะบั‚ะฐ)

ื•ื•ื• ืฆื• ื‘ืึทืงื•ืžืขืŸ / ื˜ืฉืขืง Project Key ืื•ืŸ ืคึผืจื•ื™ืขืงื˜ ืฉื™ื™ึทืŸ.

Project Key ืื™ื– ืื™ืŸ ื“ื™ ื“ื ืึธ ืจืขื›ื˜. ื“ื™ URL ื›ึผื•ืœืœ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืฉื™ื™ึทืŸ.

ื•ื•ื™ื™ึทื–ื ื“ื™ืง ืžืงื•ืจ ืงืึธื“ ืงื•ื•ืึทืœื™ื˜ืขื˜ ืงืึธื ื˜ืจืึธืœ ืกื˜ืึทื˜ื•ืก ืื™ืŸ SonarQube ืฆื• ื“ืขื•ื•ืขืœืึธืคึผืขืจืก

ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ ืงืจื™ื’ืŸ ืžืขื˜ืจื™ืงืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงื•ืง ื“ืึธ.

ื›ืœ ืจื™ืงื•ื•ืขืก ืคึฟืึทืจ ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ, ื–ืฉื•ืง ืคื™ืงืกื™ื– ืคืึธืจืœื™ื™ื’ืŸ ืฆื• ื“ืขื ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™.

ื˜ืขืœืขื’ืจืึทื ืฉืžื•ืขืกืŸ ื•ื•ืขื’ืŸ SonarQube https://t.me/sonarqube_ru
ื˜ืขืœืขื’ืจืึทื ืฉืžื•ืขืกืŸ ื•ื•ืขื’ืŸ DevSecOps - ื–ื™ื›ืขืจ DevOps https://t.me/sec_devops

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’