lean_delivery.sonarqube
Π ΠΎΠ»Ρ SonarQube
ΠΡΠ° ΡΠΎΠ»Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ 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 - ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ
- CentOS, RHEL
Java, Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Ρ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΎΠ»ΠΈ galaxy:
- lean_delivery.java
- geerlingguy.postgresql
- jdauphant.ssl-certs
- nginxinc.nginx
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ»ΠΈ
sonar_version
- Π²Π΅ΡΡΠΈΡ SonarQubesonar_path
- ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: /opt/sonarqubesonar_user
- ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ SonarQube
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: sonarsonar_group
- Π³ΡΡΠΏΠΏΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ SonarQube
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: sonarsonar_nofile
- ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠΈΠΉ SonarQube, ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΊΡΡΡΡ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: 65536sonar_nproc
- ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠΈΠΉ SonarQube, ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΊΡΡΡΡ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: 4096sonar_max_map_count
- Π»ΠΈΠΌΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° mmap, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ Elasticsearch
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: 262144sonar_log_level
- ΡΡΠΎΠ²Π΅Π½Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° SonarQube
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: INFOsonar_java_opts
:web
- Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ java Π΄Π»Ρ Π²Π΅Π±-ΡΠ°ΡΡΠΈ SonarQube
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: -Xmx512m -Xms128mes
- Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ java Π΄Π»Ρ Elasticsearch
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: -Xms512m -Xmx512mce
- Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ java Π΄Π»Ρ Compute Engine
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: -Xmx512m -Xms128m
web
:host
- IP-Π°Π΄ΡΠ΅Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π° SonarQube
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: 0.0.0.0port
- TCP-ΠΏΠΎΡΡ Π΄Π»Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ HTTP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: 9000path
- Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: /
sonar_db
- Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡtype
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ : postgresqlport
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ : 5432host
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ : localhostname
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: sonaruser
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: sonarpassword
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: sonaroptions
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ:
sonar_store
- ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ² sonarqube
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: https://sonarsource.bintray.com/Distribution/sonarqubesonar_check_url
- URL Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ° SonarQube
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: http://{{ web.host }}:{{ web.port }}sonar_download
- ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ° sonarqube.zip. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ false, ΠΊΠΎΠ³Π΄Π° Π·Π°Π³ΡΡΠ·ΠΊΠ° zip Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ zip Π² sonar_download_path Π²ΡΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΏΠ»Π΅ΠΉΠ±ΡΠΊΠ°. ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: truesonar_download_path
- Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΡΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: /tmp/sonar_proxy_type
- Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ, Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ nginx
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: nginxsonar_proxy_server_name
- ΠΈΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: '{{ ansible_fqdn }}'sonar_proxy_http
- ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π»ΠΈ http-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: falsesonar_proxy_http_port
- http-ΠΏΠΎΡΡ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: 80sonar_proxy_ssl
- ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π»ΠΈ https-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: truesonar_proxy_ssl_port
- https-ΠΏΠΎΡΡ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: 443sonar_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
- Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ΅Π»Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: 32msonar_install_recommended_plugins
- ΡΡΠ΅Π±ΡΡΡΡΡ Π»ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: truesonar_recommended_plugins
- ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²\sonar_update_default_plugins
- ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: truesonar_default_plugins
- ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ\sonar_install_optional_plugins
- ΡΡΠ΅Π±ΡΡΡΡΡ Π»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: falsesonar_optional_plugins
- ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², Π²ΡΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ΅ Π²ΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ SonarQube, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ.sonar_excluded_plugins
- ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ°ΡΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΈΡΠΊΠ»ΡΡΡΠ½Π½ΡΡ ΠΈΠ· ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠ° SonarQubesonar_default_excluded_plugins
- ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: []sonar_web_user
- ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: adminsonar_web_password
- ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: adminchange_password
- ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ true, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ°ΡΠΎΠ»Ρ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: falsesonar_web_old_password
- ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠ°ΡΠΎΠ»Ρ (Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ)
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: adminsonar_migrate_db
- ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΠΠ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ SonarQube Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ.
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: falsesonar_set_jenkins_webhook
- ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π²Π΅Π±Ρ ΡΠΊΠ° jenkins
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: falsesonar_jenkins_webhook_name
- ΠΈΠΌΡ Π²Π΅Π±Ρ ΡΠΊΠ° jenkins
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: jenkinssonar_jenkins_webhook_url
- URL Π²Π΅Π±Ρ ΡΠΊΠ° jenkins
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: https://jenkins.example.com/sonarqube-webhook/sonar_restore_profiles
- ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: falsesonar_profile_list
- ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ Π΄Π»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡsonar_updatecenter_activate
- Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π½ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ SonarQube
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: true
Π‘Π΅ΠΊΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ LDAP. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ https://docs.sonarqube.org/latest/instance-administration/delegated-auth/#header-6 Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ.
ldap
: ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: undefinedauthenticator_downcase
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: falseurl
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: ldap://myserver.mycompany.combind_dn
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: my_bind_dnbind_password
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: my_bind_passwordauthentication
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: simplerealm
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ:contextFactoryClass
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: com.sun.jndi.ldap.LdapCtxFactoryStartTLS
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: falsefollowReferrals
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: trueuser_base_dn
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ : ou=Users,dc=mycompany,dc=comuser_request
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: (&(objectClass=inetOrgPerson)(uid={login}))user_real_name_attribute
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: cnuser_email_attribute
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: mailgroup_base_dn
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: ou=Groups,dc=sonarsource,dc=comgroup_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 team@lean-delivery.com
Lean Delivery SonarQube server install
ansible-galaxy install lean_delivery.sonarqube