lean_delivery.sonarqube
SonarQube角色
此角色安装SonarQube,并附带一套扩展插件。下面的剧本示例还使用了openJDK、PostgreSQL数据库和启用HTTPS的Nginx网页服务器。
详细信息请参见文章: 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 webhook的能力
- 恢复自定义配置文件的能力
- 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
- SonarQube版本sonar_path
- 安装目录
默认: /opt/sonarqubesonar_user
- 安装SonarQube的用户
默认: sonarsonar_group
- SonarQube用户组
默认: sonarsonar_nofile
- 运行SonarQube的用户可以打开的文件描述符数量
默认: 65536sonar_nproc
- 运行SonarQube的用户可以打开的线程数量
默认: 4096sonar_max_map_count
- Elasticsearch所需的mmap计数限制
默认: 262144sonar_log_level
- SonarQube服务器的日志级别
默认: INFOsonar_java_opts
:web
- SonarQube网页部分的额外Java选项
默认: -Xmx512m -Xms128mes
- Elasticsearch的额外Java选项
默认: -Xms512m -Xmx512mce
- 计算引擎的额外Java选项
默认: -Xmx512m -Xms128m
web
:host
- SonarQube绑定的IP地址
默认: 0.0.0.0port
- 用于传入HTTP连接的TCP端口
默认: 9000path
- 网页上下文
默认: /
sonar_db
- 数据库设置type
默认 : postgresqlport
默认 : 5432host
默认 : localhostname
默认: sonaruser
默认: sonarpassword
默认: sonaroptions
默认:
sonar_store
- SonarQube工件提供者
默认: https://sonarsource.bintray.com/Distribution/sonarqubesonar_check_url
- SonarQube启动验证的URL
默认: http://{{ web.host }}:{{ web.port }}sonar_download
- 是否需要下载sonarqube.zip。如果无法下载zip,请手动将zip放到sonar_download_path中,然后再运行剧本。 默认: truesonar_download_path
- 本地下载路径
默认: /tmp/sonar_proxy_type
- 仅支持nginx的Web服务器
默认: 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
- 从SonarQube安装程序中排除的旧插件列表sonar_default_excluded_plugins
- 您不需要的默认插件列表
默认: []sonar_web_user
- 管理员用户的用户名
默认: adminsonar_web_password
- 管理员用户的密码
默认: adminchange_password
- 设置为true以更改密码
默认: falsesonar_web_old_password
- 当前密码(更改前)
默认: adminsonar_migrate_db
- 是否需要数据库迁移。当更新现有SonarQube至新版本时设置为true。
默认: falsesonar_set_jenkins_webhook
- 是否需要Jenkins webhook配置
默认: falsesonar_jenkins_webhook_name
- Jenkins webhook的名称
默认: jenkinssonar_jenkins_webhook_url
- Jenkins webhook的URL
默认: 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
:
默认: 未定义authenticator_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: your_new_secure_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
许可证
apache-2.0
下载
25.1k
拥有者
Simplify by using!