Skip to main content

GitLab CI/CD интеграци

GitLab дээрх project-оо SonarQube-тэй холбох, CI/CD pipeline-д SonarQube анализыг нэгтгэх


Шаардлагатай
  • GitLab дээрх project (repository)
  • SonarQube server эсвэл cloud дээрх хандалт
  • GitLab CI/CD pipeline ажиллуулах эрх
  • SonarQube дээр project үүссэн байх (Эндээс харна уу)

1. SonarQube Token үүсгэх

SonarQube-д код илгээхэд token шаардлагатай.

  1. SonarQube-д нэвтэрнэ
  2. Анализ хийх project-оо сонгоно
  3. "How do you want to analyze your repository?" дотор "With GitLab CI" сонгоно

SonarQube Gitlab CI

  1. "Analyze your project with GitLab CI" хуудас харагдана

2. Environment Variables тохируулах

GitLab-д SonarQube-тай холбогдоход шаардлагатай хувьсагчдыг тохируулна.

2.1. SONAR_TOKEN нэмэх

  1. GitLab дээр өөрийн project руу орно
  2. Settings > CI/CD > Variables руу орно
  3. "Add Variable" дарж дараах утгуудыг оруулна:
    • Key: SONAR_TOKEN
    • Value: SonarQube-с үүсгэсэн token
      • Token үүсээгүй бол Generate Token товчийг дарна
      • Token name автоматаар үүснэ (хэрэв хүсвэл өөрчилж болно — гэхдээ шаардлагагүй)
      • Expires in утгыг No expiration гэж сонгоно
    • Protect Variable: Checkbox-г идэвхгүй үлдээнэ
    • Mask Variable: Checkbox-г идэвхжүүлнэ (нууцлалын үүднээс)

2.2. SONAR_HOST_URL нэмэх

Мөн адилхан Variables хэсэгт дахин "Add Variable" дарж:

  • Key: SONAR_HOST_URL
  • Value: https://sonarqube.techpartners.asia
  • Protect Variable: Checkbox-г идэвхгүй үлдээнэ
  • Mask Variable: Checkbox-г идэвхгүй болгоно

Дараах байдлаар нэмэгдэнэ:

GitLab vars


3. Project төрөл сонгох

SonarQube дээр "What option best describes your project?" гэсэн сонголт гарч ирнэ. Өөрийн project-ийн төрлийг сонгоно:

  • Maven - Java Maven project
  • Gradle - Java/Kotlin Gradle project
  • JS/TS & Web - JavaScript, TypeScript, HTML, CSS project
  • .NET - C#, VB.NET, F# project
  • Python - Python application
  • Other - Go, PHP, C, C++ болон бусад хэл
caution

Сонголтоо зөв хийх нь анализын үр дүнд нөлөөлнө. Өөрийн project-д хамгийн тохирсон төрлийг сонгоно уу.


4. Тохиргооны файлууд үүсгэх

4.1. sonar-project.properties файл үүсгэх

Project-ийн root folder-д sonar-project.properties нэртэй файл үүсгэж, дараах агуулгыг оруулна:

sonar.projectKey=test-sonar
sonar.qualitygate.wait=true
note

sonar.projectKey утгыг өөрийн SonarQube дээрх project key-тэй ижилхэн тохируулна.

4.2. .gitlab-ci.yml файл үүсгэх эсвэл шинэчлэх

Project-ийн root folder-д .gitlab-ci.yml файл үүсгэж эсвэл байгаа файлдаа дараах SonarQube stage-ийг нэмнэ:

image: 
name: sonarsource/sonar-scanner-cli:11
entrypoint: [""]

variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Analysis task cache-ийн байршил
GIT_DEPTH: "0"

stages:
- build-sonar

build-sonar:
stage: build-sonar

cache:
policy: pull-push
key: "sonar-cache-$CI_COMMIT_REF_SLUG"
paths:
- "${SONAR_USER_HOME}/cache"
- sonar-scanner/

script:
- sonar-scanner -Dsonar.host.url="${SONAR_HOST_URL}"
allow_failure: false # Алдаатай үед pipeline зогсоно
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- if: $CI_COMMIT_BRANCH == 'master'
- if: $CI_COMMIT_BRANCH == 'main'
- if: $CI_COMMIT_BRANCH == 'develop'
warning

Энэ stage-ийг project-ийн хамгийн эхний stage дээр байрлуулна. Үүний дараа build, test, deploy stage-уудыг үргэлжлүүлэн хийхэд зохистой.


5. Pipeline ажиллуулах

Тохиргоо дууссаны дараа:

  1. Файлуудаа commit & push хийнэ
  2. GitLab CI/CD pipeline автоматаар ажиллана
  3. Pipeline амжилттай дууссаны дараа SonarQube дээр анализын үр дүнг харна

Pipeline хэзээ ажиллах вэ?

Дээрх тохиргооны дагуу pipeline дараах тохиолдолд ажиллана:

  • Merge Request үүсгэх үед
  • master, main, эсвэл develop branch-д push хийх үед

6. Анализын үр дүн шалгах

  1. SonarQube dashboard руу орно
  2. Өөрийн project-ийг сонгоно
  3. Code quality, security vulnerabilities, code smells зэрэг мэдээллийг харна

Дараах байдлаар харагдана:

Code Quality

note

Энэ нь үндсэн тохиргоо бөгөөд өөрийн project-ийн төрөл (Maven, Gradle, .NET гэх мэт)-д тохируулан нэмэлт тохиргоо хийх шаардлагатай байж болно.


7. Асуудал шийдвэрлэх

Хэрэв pipeline ажиллахгүй эсвэл алдаа гарвал:

  1. Token шалгах: GitLab Variables дээр SONAR_TOKEN зөв тохируулагдсан эсэхийг шалгана
  2. Project key шалгах: sonar-project.properties файл дахь sonar.projectKey SonarQube дээрх project key-тэй ижил эсэхийг шалгана
  3. Pipeline лог шалгах: GitLab CI/CD > Pipelines дээр алдааны мэдээллийг харна

Нэмэлт тохиргоо

Хэрэв танд аль хэдийн ажиллаж байгаа .gitlab-ci.yml файл байгаа бол дээрх build-sonar stage-ийг өөрийн файлдаа нэмж болно.