lean_delivery.sonarqube
Rola SonarQube
Ta rola instaluje SonarQube z zestawem rozszerzonych wtyczek. Przykład playbooka poniżej wykorzystuje również openJDK, bazę danych PostgreSQL oraz serwer internetowy nginx z włączonym https.
Zobacz artykuł tutaj: https://lean-delivery.com/2020/02/how-to-add-sonarqube-to-ci-process.html
Oprócz domyślnych wtyczek, które są dołączone do SonarQube, ta rola może zainstalować następujące polecane wtyczki:
- 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
Możesz również zainstalować opcjonalne wtyczki. Uważaj, niektóre z nich nie są obsługiwane w najnowszych wersjach SonarQube:
- qualinsight-sonarqube-smell-plugin
- qualinsight-sonarqube-badges
- sonar-auth-github-plugin
- sonar-auth-bitbucket-plugin
- sonar-bitbucket-plugin (dla Bitbucket Cloud)
- sonar-stash-plugin (dla 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
Zobacz matrycę wtyczek tutaj: https://docs.sonarsource.com/sonarqube/latest/instance-administration/plugin-version-matrix/
Ta rola oferuje również kilka opcji konfiguracyjnych:
- możliwość migracji bazy danych przy aktualizacji SonarQube do nowej wersji
- możliwość ustawienia webhooka Jenkins
- możliwość przywrócenia niestandardowych profili
- konfiguracja LDAP
- możliwość zmiany hasła dla użytkownika admin
Zobacz przykład pipeline'a Jenkins tutaj: https://raw.githubusercontent.com/lean-delivery/ansible-role-sonarqube/master/files/example_pipeline.groovy
Wymagania
- Obsługiwane wersje Ansible:
- 5 (2.12) - jeszcze nie przetestowane, powinno działać
- 6 (2.13)
- 7 (2.14)
- Obsługiwane wersje SonarQube:
- 7.9.6 poprzednia LTS
- 8.9.10 poprzednia LTS
- 9.9.6 LTS
- 10.0 - 10.6
- Obsługiwany Java:
- 11
- 17 (użyj dla SonarQube 9.9+)
- Obsługiwane bazy danych:
- PostgreSQL
- MySQL (niezalecane)
- osadzony H2 (tylko do testów)
- Obsługiwane serwery www (odwrócony proxy dla https):
- nginx
- Obsługiwane systemy operacyjne:
- CentOS, RHEL
- 7
- Ubuntu
- 18.04
- 20.04 - jeszcze nie przetestowane, powinno działać
- 22.04 - jeszcze nie przetestowane, powinno działać
- CentOS, RHEL
Java, baza danych i serwer www z samopodpisanym certyfikatem powinny być wcześniej zainstalowane. Użyj następujących ról z galaxy:
- lean_delivery.java
- geerlingguy.postgresql
- jdauphant.ssl-certs
- nginxinc.nginx
Zmienna Roli
sonar_version
- wersja SonarQubesonar_path
- katalog instalacyjny
domyślnie: /opt/sonarqubesonar_user
- użytkownik do instalacji SonarQube
domyślnie: sonarsonar_group
- grupa użytkownika SonarQube
domyślnie: sonarsonar_nofile
- liczba deskryptorów plików, które użytkownik uruchamiający SonarQube może otworzyć
domyślnie: 65536sonar_nproc
- liczba wątków, które użytkownik uruchamiający SonarQube może otworzyć
domyślnie: 4096sonar_max_map_count
- limit liczby mmap wymagany dla Elasticsearch
domyślnie: 262144sonar_log_level
- poziom logowania serwera SonarQube
domyślnie: INFOsonar_java_opts
:web
- dodatkowe opcje java dla części webowej SonarQube
domyślnie: -Xmx512m -Xms128mes
- dodatkowe opcje java dla Elasticsearch
domyślnie: -Xms512m -Xmx512mce
- dodatkowe opcje java dla Compute Engine
domyślnie: -Xmx512m -Xms128m
web
:host
- adres IP wiązania SonarQube
domyślnie: 0.0.0.0port
- port TCP dla przychodzących połączeń HTTP
domyślnie: 9000path
- kontekst webowy
domyślnie: /
sonar_db
- ustawienia bazy danychtype
domyślnie: postgresqlport
domyślnie: 5432host
domyślnie: localhostname
domyślnie: sonaruser
domyślnie: sonarpassword
domyślnie: sonaroptions
domyślnie:
sonar_store
- dostawca artefaktów sonarqube
domyślnie: https://sonarsource.bintray.com/Distribution/sonarqubesonar_check_url
- url do weryfikacji uruchomienia SonarQube
domyślnie: http://{{ web.host }}:{{ web.port }}sonar_download
- czy pobranie sonarqube.zip jest wymagane. Ustaw na false, gdy nie ma możliwości pobrania zip i wrzuć zip do sonar_download_path ręcznie przed uruchomieniem playbooka. domyślnie: truesonar_download_path
- lokalna ścieżka pobierania
domyślnie: /tmp/sonar_proxy_type
- serwer www, obecnie obsługiwany jest tylko nginx
domyślnie: nginxsonar_proxy_server_name
- nazwa serwera w konfiguracji serwera www
domyślnie: '{{ ansible_fqdn }}'sonar_proxy_http
- czy dozwolone jest połączenie http
domyślnie: falsesonar_proxy_http_port
- port http
domyślnie: 80sonar_proxy_ssl
- czy dozwolone jest połączenie https
domyślnie: truesonar_proxy_ssl_port
- port https
domyślnie: 443sonar_proxy_ssl_cert_path
- ścieżka do certyfikatu
domyślnie: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.pem'sonar_proxy_ssl_key_path
- ścieżka do klucza
domyślnie: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.key'sonar_proxy_client_max_body_size
- ustawienie maksymalnego rozmiaru ciała klienta w konfiguracji serwera www
domyślnie: 32msonar_install_recommended_plugins
- czy wymagane są wtyczki zalecane
domyślnie: truesonar_recommended_plugins
- lista polecanych wtyczek\sonar_update_default_plugins
- czy wymagana jest aktualizacja domyślnych wtyczek
domyślnie: truesonar_default_plugins
- lista domyślnych wtyczek\sonar_install_optional_plugins
- czy wymagane są opcjonalne wtyczki
domyślnie: falsesonar_optional_plugins
- lista opcjonalnych wtyczek wyłączonych domyślnie. Nie wszystkie z nich są obsługiwane w najnowszych wersjach SonarQube, dlatego wybierz te, których potrzebujesz i nadpisz tę właściwość.sonar_excluded_plugins
- lista starych wtyczek wykluczonych z instalatora SonarQubesonar_default_excluded_plugins
- lista domyślnych wtyczek, których nie potrzebujesz
domyślnie: []sonar_web_user
- nazwa użytkownika dla użytkownika admin
domyślnie: adminsonar_web_password
- hasło dla użytkownika admin
domyślnie: adminchange_password
- ustaw true, aby zmienić hasło
domyślnie: falsesonar_web_old_password
- bieżące hasło (przed zmianą)
domyślnie: adminsonar_migrate_db
- czy migracja bazy danych jest wymagana. Ustaw na true podczas aktualizacji istniejącego SonarQube do nowej wersji.
domyślnie: falsesonar_set_jenkins_webhook
- czy wymagana jest konfiguracja webhooka jenkins
domyślnie: falsesonar_jenkins_webhook_name
- nazwa webhooka jenkins
domyślnie: jenkinssonar_jenkins_webhook_url
- url webhooka jenkins
domyślnie: https://jenkins.example.com/sonarqube-webhook/sonar_restore_profiles
- czy przywrócenie profilu jest wymagane
domyślnie: falsesonar_profile_list
- lista profili do przywróceniasonar_updatecenter_activate
- aktywować centrum aktualizacji SonarQube
domyślnie: true
Sekcja konfiguracji Ldap.
Zobacz https://docs.sonarqube.org/latest/instance-administration/delegated-auth/#header-6, aby uzyskać opis
ldap
:
domyślnie: undefinedauthenticator_downcase
domyślnie: falseurl
domyślnie: ldap://myserver.mycompany.combind_dn
domyślnie: my_bind_dnbind_password
domyślnie: my_bind_passwordauthentication
domyślnie: simplerealm
domyślnie:contextFactoryClass
domyślnie: com.sun.jndi.ldap.LdapCtxFactoryStartTLS
domyślnie: falsefollowReferrals
domyślnie: trueuser_base_dn
domyślnie: ou=Users,dc=mycompany,dc=comuser_request
domyślnie: (&(objectClass=inetOrgPerson)(uid={login}))user_real_name_attribute
domyślnie: cnuser_email_attribute
domyślnie: mailgroup_base_dn
domyślnie: ou=Groups,dc=sonarsource,dc=comgroup_request
domyślnie: (&(objectClass=posixGroup)(memberUid={uid}))group_idAttribute
domyślnie: cn
Przykład Playbooka
---
- nazwa: Zainstaluj SonarQube
gospodarze: 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: your_new_secure_password
change_password: true
sonar_web_old_password: admin
sonar_migrate_db: false # ustaw na true, jeśli aktualizujesz SonarQube do nowej wersji
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:
- nazwa: zainstaluj klucz rpm
rpm_key:
state: present
key: https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}
when: ansible_distribution == 'RedHat'
- nazwa: zainstaluj epel
package:
name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm
state: present
when: ansible_distribution == 'RedHat'
# usuń wcześniej zainstalowanego sonara, aby uniknąć konfliktu wtyczek
- nazwa: usuń sonar
file:
path: '{{ sonar_path }}'
state: absent
role:
- rola: lean_delivery.java
- rola: geerlingguy.postgresql
- rola: nginxinc.nginx
- rola: jdauphant.ssl-certs
- rola: lean_delivery.sonarqube
tasks:
- nazwa: usuń domyślną konfigurację nginx
file:
path: /etc/nginx/conf.d/default.conf
state: absent
- nazwa: przeładuj nginx
command: 'nginx -s reload'
Licencja
Apache
Informacje o autorze
autorzy:
- Zespół Lean Delivery team@lean-delivery.com
Lean Delivery SonarQube server install
ansible-galaxy install lean_delivery.sonarqube