lean_delivery.sonarqube

Роль SonarQube

ЛицСнзия Galaxy Ansible Ansible

Π­Ρ‚Π° Ρ€ΠΎΠ»ΡŒ устанавливаСт SonarQube с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ»Π΅ΠΉΠ±ΡƒΠΊΠ° Π½ΠΈΠΆΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ openJDK, Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… PostgreSQL ΠΈ Π²Π΅Π±-сСрвСр nginx с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ https.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ здСсь: https://lean-delivery.com/2020/02/how-to-add-sonarqube-to-ci-process.html

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌ Π² Ρ€ΠΎΠ»ΡŒ SonarQube, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹:

  • checkstyle-sonar-plugin
  • sonar-pmd-plugin
  • sonar-findbugs-plugin
  • mutation-analysis-plugin
  • sonar-jdepend-plugin
  • sonar-jproperties-plugin
  • sonar-groovy-plugin
  • sonar-dependency-check-plugin
  • sonar-json-plugin
  • sonar-yaml-plugin
  • sonar-ansible-plugin
  • sonar-shellcheck-plugin

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² послСдних вСрсиях SonarQube:

  • qualinsight-sonarqube-smell-plugin
  • qualinsight-sonarqube-badges
  • sonar-auth-github-plugin
  • sonar-auth-bitbucket-plugin
  • sonar-bitbucket-plugin (для Bitbucket Cloud)
  • sonar-stash-plugin (для Bitbucket Server)
  • sonar-auth-gitlab-plugin
  • sonar-gitlab-plugin
  • sonar-xanitizer-plugin
  • sonar-build-breaker-plugin
  • sonar-issueresolver-plugin
  • sonarqube-community-branch-plugin
  • sonar-aemrules-plugin

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² здСсь: https://docs.sonarsource.com/sonarqube/latest/instance-administration/plugin-version-matrix/

Π­Ρ‚Π° Ρ€ΠΎΠ»ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

  • Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π‘Π” ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ SonarQube Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ вСрсии
  • Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ настройки Π²Π΅Π±Ρ…ΡƒΠΊΠ° Jenkins
  • Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ
  • конфигурация LDAP
  • Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ смСны пароля для администратора

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Jenkins здСсь: https://raw.githubusercontent.com/lean-delivery/ansible-role-sonarqube/master/files/example_pipeline.groovy

ВрСбования

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ вСрсии Ansible:
    • 5 (2.12) - ΠΏΠΎΠΊΠ° Π½Π΅ протСстировано, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
    • 6 (2.13)
    • 7 (2.14)
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ вСрсии SonarQube:
    • 7.9.6 прСдыдущая LTS
    • 8.9.10 прСдыдущая LTS
    • 9.9.6 LTS
    • 10.0 - 10.6
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ Java:
    • 11
    • 17 (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ для SonarQube 9.9+)
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…:
    • PostgreSQL
    • MySQL (Π½Π΅ рСкомСндуСтся)
    • встроСнная H2 (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для тСстов)
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π²Π΅Π±-сСрвСры (ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ прокси для https):
    • nginx
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ОБ:
    • CentOS, RHEL
      • 7
    • Ubuntu
      • 18.04
      • 20.04 - ΠΏΠΎΠΊΠ° Π½Π΅ протСстировано, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
      • 22.04 - ΠΏΠΎΠΊΠ° Π½Π΅ протСстировано, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ

Java, Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Π΅Π±-сСрвСр с самоподписанным сСртификатом Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ установлСны. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€ΠΎΠ»ΠΈ galaxy:

  • lean_delivery.java
  • geerlingguy.postgresql
  • jdauphant.ssl-certs
  • nginxinc.nginx

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ€ΠΎΠ»ΠΈ

  • sonar_version - вСрсия SonarQube
  • sonar_path - ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ установки
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: /opt/sonarqube
  • sonar_user - ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ для установки SonarQube
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: sonar
  • sonar_group - Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ SonarQube
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: sonar
  • sonar_nofile - количСство Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… дСскрипторов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ SonarQube, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 65536
  • sonar_nproc - количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ SonarQube, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 4096
  • sonar_max_map_count - Π»ΠΈΠΌΠΈΡ‚ количСства mmap, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для Elasticsearch
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 262144
  • sonar_log_level - ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ логирования сСрвСра SonarQube
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: INFO
  • sonar_java_opts:
    • web - Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ java для Π²Π΅Π±-части SonarQube
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: -Xmx512m -Xms128m
    • es - Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ java для Elasticsearch
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: -Xms512m -Xmx512m
    • ce - Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ java для Compute Engine
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: -Xmx512m -Xms128m
  • web:
    • host - IP-адрСс, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ привязана SonarQube
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 0.0.0.0
    • port - TCP-ΠΏΠΎΡ€Ρ‚ для входящих HTTP-соСдинСний
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 9000
    • path - Π²Π΅Π±-контСкст
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: /
  • sonar_db - настройки Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
    • type
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ : postgresql
    • port
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ : 5432
    • host
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ : localhost
    • name
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: sonar
    • user
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: sonar
    • password
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: sonar
    • options
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:
  • sonar_store - источник Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² sonarqube
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: https://sonarsource.bintray.com/Distribution/sonarqube
  • sonar_check_url - URL для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ запуска SonarQube
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: http://{{ web.host }}:{{ web.port }}
  • sonar_download - трСбуСтся Π»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° sonarqube.zip. УстановитС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false, ΠΊΠΎΠ³Π΄Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° zip Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, ΠΈ помСститС zip Π² sonar_download_path Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄ запуском ΠΏΠ»Π΅ΠΉΠ±ΡƒΠΊΠ°. ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true
  • sonar_download_path - Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: /tmp/
  • sonar_proxy_type - Π²Π΅Π±-сСрвСр, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ nginx
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: nginx
  • sonar_proxy_server_name - имя сСрвСра Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²Π΅Π±-сСрвСра
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: '{{ ansible_fqdn }}'
  • sonar_proxy_http - Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π»ΠΈ http-соСдинСниС
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: false
  • sonar_proxy_http_port - http-ΠΏΠΎΡ€Ρ‚
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 80
  • sonar_proxy_ssl - Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π»ΠΈ https-соСдинСниС
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true
  • sonar_proxy_ssl_port - https-ΠΏΠΎΡ€Ρ‚
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 443
  • sonar_proxy_ssl_cert_path - ΠΏΡƒΡ‚ΡŒ ΠΊ сСртификату
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.pem'
  • sonar_proxy_ssl_key_path - ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠ»ΡŽΡ‡Ρƒ
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.key'
  • sonar_proxy_client_max_body_size - настройка максимального Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ‚Π΅Π»Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²Π΅Π±-сСрвСра
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 32m
  • sonar_install_recommended_plugins - Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π»ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true
  • sonar_recommended_plugins - список Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²\
  • sonar_update_default_plugins - трСбуСтся Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true
  • sonar_default_plugins - список ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ\
  • sonar_install_optional_plugins - Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: false
  • sonar_optional_plugins - список Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. НС всС ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² послСдних вСрсиях SonarQube, поэтому Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ это свойство.
  • sonar_excluded_plugins - список старых ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΈΡΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… ΠΈΠ· установщика SonarQube
  • sonar_default_excluded_plugins - список ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: []
  • sonar_web_user - имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для администратора
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: admin
  • sonar_web_password - ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для администратора
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: admin
  • change_password - установитС true, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: false
  • sonar_web_old_password - Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ (Π΄ΠΎ измСнСния)
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: admin
  • sonar_migrate_db - трСбуСтся Π»ΠΈ миграция Π‘Π”. УстановитС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ вСрсии SonarQube Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ.
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: false
  • sonar_set_jenkins_webhook - трСбуСтся Π»ΠΈ конфигурация Π²Π΅Π±Ρ…ΡƒΠΊΠ° jenkins
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: false
  • sonar_jenkins_webhook_name - имя Π²Π΅Π±Ρ…ΡƒΠΊΠ° jenkins
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: jenkins
  • sonar_jenkins_webhook_url - URL Π²Π΅Π±Ρ…ΡƒΠΊΠ° jenkins
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: https://jenkins.example.com/sonarqube-webhook/
  • sonar_restore_profiles - трСбуСтся Π»ΠΈ восстановлСниС ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: false
  • sonar_profile_list - список ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ для восстановлСния
  • sonar_updatecenter_activate - Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‚Ρ€ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ SonarQube
    ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true

БСкция ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ LDAP. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ https://docs.sonarqube.org/latest/instance-administration/delegated-auth/#header-6 для описания.

  • ldap: ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: undefined
    • authenticator_downcase
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: false
    • url
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: ldap://myserver.mycompany.com
    • bind_dn
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: my_bind_dn
    • bind_password
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: my_bind_password
    • authentication
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: simple
    • realm
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:
    • contextFactoryClass
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: com.sun.jndi.ldap.LdapCtxFactory
    • StartTLS
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: false
    • followReferrals
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true
    • user_base_dn
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ : ou=Users,dc=mycompany,dc=com
    • user_request
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: (&(objectClass=inetOrgPerson)(uid={login}))
    • user_real_name_attribute
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: cn
    • user_email_attribute
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: mail
    • group_base_dn
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: ou=Groups,dc=sonarsource,dc=com
    • group_request
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: (&(objectClass=posixGroup)(memberUid={uid}))
    • group_idAttribute
      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: cn

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ»Π΅ΠΉΠ±ΡƒΠΊΠ°

---
- name: Установка SonarQube
  hosts: sonarqube
  become: true
  vars:
    # java
    java_major_version: 17
    transport: repositories
    # postgresql
    postgresql_users:
      - name: sonar
        password: sonar
    postgresql_databases:
      - name: sonar
    # ssl-certs
    ssl_certs_path_owner: nginx
    ssl_certs_path_group: nginx
    ssl_certs_common_name: sonarqube.example.com
    # sonarqube
    sonar_version: 10.6.0.92116
    sonar_check_url: 'http://{{ ansible_fqdn }}:9000'
    sonar_proxy_server_name: sonarqube.example.com
    sonar_install_optional_plugins: true
    sonar_optional_plugins: 
      - 'https://github.com/adnovum/sonar-build-breaker/releases/download/{{ build_breaker_epversion }}'
    sonar_default_excluded_plugins:
      - '{{ sonar_plugins_path }}/sonar-flex-plugin-2.12.0.4568.jar'
    sonar_web_password: ваш_Π½ΠΎΠ²Ρ‹ΠΉ_бСзопасный_ΠΏΠ°Ρ€ΠΎΠ»ΡŒ
    change_password: true
    sonar_web_old_password: admin
    sonar_migrate_db: false  # установитС true, Ссли обновляСтС SonarQube Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ вСрсии 
    sonar_set_jenkins_webhook: true
    sonar_jenkins_webhook_url: https://jenkins.example.com/sonarqube-webhook/
    sonar_restore_profiles: true
    sonar_profile_list:
      - files/example_profile.xml
  pre_tasks:
    - name: установка rpm ΠΊΠ»ΡŽΡ‡Π°
      rpm_key:
        state: present
        key: https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}
      when: ansible_distribution == 'RedHat'
    - name: установка epel
      package:
        name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm
        state: present
      when: ansible_distribution == 'RedHat'
    # ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π½Π΅Π΅ установлСнного sonar, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²
    - name: ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ sonar
      file:
        path: '{{ sonar_path }}'
        state: absent
  roles:
    - role: lean_delivery.java
    - role: geerlingguy.postgresql
    - role: nginxinc.nginx
    - role: jdauphant.ssl-certs
    - role: lean_delivery.sonarqube
  tasks:
    - name: ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ nginx
      file:
        path: /etc/nginx/conf.d/default.conf
        state: absent
    - name: ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° nginx
      command: 'nginx -s reload'

ЛицСнзия

Apache

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎΠ± Π°Π²Ρ‚ΠΎΡ€Π΅

Π°Π²Ρ‚ΠΎΡ€Ρ‹:

О ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅

Lean Delivery SonarQube server install

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ
ansible-galaxy install lean_delivery.sonarqube
ЛицСнзия
apache-2.0
Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ
25.1k
Π’Π»Π°Π΄Π΅Π»Π΅Ρ†
Simplify by using!