欢迎访问Sonar Source中文网站!
语言选择: ∷ 

SonarQube中的环境变量

发布时间:2023-08-18浏览次数:80

此页面提供用于使用 Docker 配置 SonarQube 的环境变量。以下环境变量中提供的值是默认值。

数据库

  • 默认使用嵌入式H2数据库。建议用于测试,但不适合生产使用。支持的数据库有 Oracle、PostgreSQL 和 Microsoft SQLServer。

  • 更改数据库连接 URL ( sonar.jdbc.url) 可能会影响 SonarSource 许可的产品。

  • 除非您打算在运行映像时删除数据库并重新开始,否则请注意不要使用-vto和 ,在运行ordocker-compose down等命令时要小心无论您是否使用参数,您的数据库卷都不会在 SonarQube 初始启动和关闭之后持续存在。docker system prunedocker volume pruneexternal: true

用户凭证

SONAR_JDBC_USERNAME=
SONAR_JDBC_PASSWORD=
必须向 JDBC 用户授予创建表、索引和触发器的权限。必须首先创建架构。

嵌入式数据库

SONAR_EMBEDDEDDATABASE_PORT=9092
H2嵌入式数据库服务器监听端口,默认9092。

甲骨文19c/21c

SONAR_JDBC_URL=jdbc:oracle:thin:@localhost:1521/XE
必须将 Oracle JDBC 驱动程序复制到目录 extensions/jdbc-driver/oracle/ 中。仅支持瘦客户端,我们建议使用最新的 Oracle JDBC 驱动程序。 

SONAR_JDBC_URL=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema
默认情况下,使用名为“public”的模式。可以使用参数“currentSchema”覆盖它。

Microsoft SQLServer 2014/2016/2017/2019/2022 和 SQL Azure

SONAR_JDBC_URL=jdbc:sqlserver://localhost;databaseName=sonar;integratedSecurity=true
名为 sonar 的数据库必须存在,并且其排序规则必须区分大小写 (CS) 和重音敏感 (AS)。如果要使用 Microsoft SQL Server 的集成安全性,请使用此连接字符串。 如果您使用集成安全性,请勿设置 SONAR_JDBC_USERNAME 或 属性。SONAR_JDBC_PASSWORD

为了使集成安全性发挥作用,您必须下载Microsoft SQL JDBC Auth 12.2.0 包并将其复制mssql-jdbc_auth-12.2.0.x64.dll到 SonarQube 主机的路径。

SONAR_JDBC_URL=jdbc:sqlserver://localhost;databaseName=sonar
如果您想在连接到 MS SQL Server 时使用 SQL Auth,请使用此连接字符串。 适当设置 SONAR_JDBC_USERNAME 和 。SONAR_JDBC_PASSWORD

连接池设置

SONAR_JDBC_MAXACTIVE=60
可以同时分配的最大活动连接数,或者负数表示没有限制。建议值为 1.2 * HTTP 池的最大大小。例如,如果以默认大小(50,请参阅属性 sonar.web.http.maxThreads) 启用 HTTP 端口,SONAR_JDBC_MAXACTIVE 则应为 1.2 * 50 = 60。

SONAR_JDBC_MAXIDLE=5
池中可以保持空闲的最大连接数,无需释放多余的连接,或者负数表示没有限制。

SONAR_JDBC_MINIDLE=2
在不创建额外连接的情况下,池中可以保持空闲的最小连接数,或者零则不创建连接。

SONAR_JDBC_MAXWAIT=5000
池在抛出异常之前等待返回连接的最大毫秒数(当没有可用连接时),或者 <= 0 无限期等待。

SONAR_JDBC_MINEVICTABLEIDLETIMEMILLIS=600000
SONAR_JDBC_TIMEBETWEENEVICTIONRUNSMILLIS=30000
与驱逐相关的设置。

网络服务器

SONAR_WEB_JAVAOPTS=
Web 服务器在专用 Java 进程中执行。使用此属性可以自定义 JVM 选项。

推荐使用 HotSpot 服务器虚拟机。如果您的环境中默认情况下未启用服务器模式,则应添加属性 -server。请参阅 此处

如果熵源缺乏熵,启动时间可能会很长。添加 -Djava.security.egd=file:/dev/./urandom 是解决该问题的一个选项。看 这里

SONAR_WEB_JAVAADDITIONALOPTS=
与之前的属性相同,但允许不重复所有其他设置,例如-Xmx

SONAR_WEB_HOST=0.0.0.0
绑定IP地址。对于具有多个 IP 地址的服务器,此属性指定将使用哪个地址来侦听指定端口。默认情况下,端口将用于与服务器关联的所有 IP 地址。

SONAR_WEB_CONTEXT= 
网络上下文。设置后,它必须以正斜杠开头(例如 /sonarqube)。默认值为根上下文(空值)。

SONAR_WEB_PORT=9000
用于传入 HTTP 连接的 TCP 端口。默认值为 9000。

SONAR_WEB_HTTP_MAXTHREADS=50
服务器在任何给定时间接受和处理的最大连接数。当达到此数量时,服务器将不再接受任何连接,直到连接数量低于此值。操作系统仍可能接受基于该 SONAR_WEB_CONNECTIONS_ACCEPTCOUNT 属性的连接。默认值为 50。

SONAR_WEB_HTTP_MINTHREADS=5
最小数量的线程始终保持运行。默认值为 5。

SONAR_WEB_HTTP_ACCEPTCOUNT=25
当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度。队列已满时收到的任何请求都将被拒绝。默认值为 25。

SONAR_WEB_HTTP_KEEPALIVETIMEOUT=60000
此连接器在关闭连接之前等待另一个 HTTP 请求的毫秒数。使用值 -1 表示无(即无限)超时。默认值为 60000(毫秒)。

SONAR_AUTH_JWTBASE64HS256SECRET=
默认情况下,服务器重新启动时用户将注销并关闭会话。如果您希望保持用户会话开放,则应定义一个秘密。值是使用 base64 编码的 HS256 密钥。对于 SonarQube 的每次安装,它都必须是唯一的。命令行示例:
echo -n "typewhatyou_want" | openssl dgst -sha256 -hmac "key" -binary | base64

SONAR_WEB_SESSIONTIMEOUTINMINUTES=4320
用户会话的不活动超时持续时间(以分钟为单位)。在配置的时间段后,用户将注销。默认值为 3 天(4320 分钟)。该值不能小于 6 分钟或大于 3 个月(129600 分钟)。值必须严格为正。

SONAR_WEB_SYSTEMPASSCODE=
可以定义密码以从监控工具访问某些 Web 服务,而无需使用系统管理员的凭据。检查 Web API 文档以了解哪些 Web 服务支持此身份验证模式。密码应在带有“X-Sonar-Passcode”标头的 HTTP 请求中提供。默认情况下该功能被禁用。

单点登录认证

SONAR_WEB_SSO_ENABLE=false
启用使用 HTTP 标头进行身份验证

SONAR_WEB_SSO_LOGINHEADER=X-Forwarded-Login
用于获取用户登录的标头名称。仅允许使用字母数字、“ .”和“ ”字符@

SONAR_WEB_SSO_NAMEHEADER=X-Forwarded-Name
获取用户名的标头名称

SONAR_WEB_SSO_EMAILHEADER=X-Forwarded-Email
用于获取用户电子邮件的标头名称(可选)

SONAR_WEB_SSO_GROUPSHEADER=X-Forwarded-Groups
用于获取用户组列表的标头名称,以逗号分隔(可选)。如果设置了 SONAR SSO GROUPSHEADER,并且 SonarQube 中存在组,则用户将属于这些组。如果 SonarQube 中不存在提供的组,则用户将仅属于默认组。请注意,将始终设置默认组。

SONAR_WEB_SSO_REFRESHINTERVALINMINUTES=5
用于了解何时刷新姓名、电子邮件和组的时间间隔。在此间隔期间,如果标头中的用户名发生更改,则只会在 X 分钟后更新。

LDAP配置

SONAR_SECURITY_REALM=LDAP
启用 LDAP 功能

SONAR_AUTHENTICATOR_DOWNCASE=true
使用不区分大小写的设置连接到 LDAP 服务器时设置为 true。

LDAP_URL=ldap://localhost:10389
LDAP 服务器的 URL。请注意,如果您使用 LDAPS,则应将服务器证书安装到 Java 信任库中。

LDAP_BINDDN=cn=sonar,ou=users,o=mycompany
绑定 DN 是要连接(或绑定)的 LDAP 用户的用户名。将此留空以匿名访问 LDAP 目录(可选)

LDAP_BINDPASSWORD=secret
绑定密码是要连接的用户的密码。将此留空以匿名访问 LDAP 目录(可选)

LDAP_AUTHENTICATION=simple
可能的值:simple | CRAM-MD5 | DIGEST-MD5 | GSSAPI请参阅 http://java.sun.com/products/jndi/tutorial/ldap/security/auth.html  (默认值simple:)

LDAP_REALM=example.org
看 :

  • http://java.sun.com/products/jndi/tutorial/ldap/security/digest.html

  • http://java.sun.com/products/jndi/tutorial/ldap/security/crammd5.html  (可选)

LDAP_CONTEXTFACTORYCLASS=com.sun.jndi.ldap.LdapCtxFactory
上下文工厂类(可选)

LDAP_STARTTLS=true
启用 StartTLS(默认false:)

LDAP_FOLLOWREFERRALS=false 遵循或不遵循推荐。请参阅 http://docs.oracle.com/javase/jndi/tutorial/ldap/referral/jndi.html  (默认值true:)

锚点映射

LDAP_USER_BASEDN=cn=users,dc=example,dc=org
LDAP 中用于搜索用户的根节点的专有名称 (DN)(强制)

LDAP_USER_REQUEST=(&(objectClass=user)(sAMAccountName={login}))
LDAP 用户请求。(默认(&(objectClass=inetOrgPerson)(uid={login})):)

LDAP_USER_REALNAMEATTRIBUTE=name LDAP 中定义用户真实姓名的属性。(默认cn:)

LDAP_USER_EMAILATTRIBUTE=email
LDAP 中定义用户电子邮件的属性。(默认mail:)

组映射

LDAP_GROUP_BASEDN=cn=groups,dc=example,dc=org
LDAP 中用于搜索组的根节点的专有名称 (DN)。(可选,默认:空)

LDAP_GROUP_REQUEST=(&(objectClass=group)(member={dn}))
LDAP 组请求(默认(&(objectClass=groupOfUniqueNames)(uniqueMember={dn})):)

LDAP_GROUP_IDATTRIBUTE=sAMAccountName
property 用于指定在兼容模式下返回用户组列表的属性。(默认cn:)

计算引擎

SONAR_CE_JAVAOPTS=
计算引擎负责处理后台任务。
Compute Engine 在专用 Java 进程中执行。
使用以下属性来自定义 JVM 选项。

推荐使用 HotSpot 服务器虚拟机。如果您的环境默认情况下未启用服务器模式,则应添加属性 -server:  http://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html

SONAR_CE_JAVAADDITIONALOPTS=
与之前的属性相同,但允许不重复所有其他设置,例如 -Xmx

弹性搜索

Elasticsearch 用于促进快速、准确的信息检索。它在专用的 Java 进程中执行。

64 位系统上的 Linux 用户请确保系统上的虚拟内存已正确配置,以便 Elasticsearch 正常运行(有关详细信息,请参阅 此处 )。

当 SonarQube 独立运行时,可能会出现如下警告logs/es.log:“ max virtual memory areas vm.maxmapcount [65530] is too low, increase to at least [262144]

然而,当 SonarQube 作为集群运行时,Elasticsearch 将拒绝启动。

SONAR_SEARCH_JAVAOPTS=
Elasticsearch 进程的 JVM 选项

SONAR_SEARCH_JAVAADDITIONALOPTS=
与之前的属性相同,但允许不重复所有其他设置,例如 -Xmx

SONAR_SEARCH_PORT=9001
Elasticsearch 端口。默认值为 9001。使用 0 获取空闲端口。作为安全预防措施,应被防火墙阻止并且不暴露于互联网。

SONAR_SEARCH_HOST=
Elasticsearch 主机。搜索服务器将绑定该地址,搜索客户端将连接到该地址。默认为环回地址。作为安全预防措施,不应设置为公开可用的地址。

更新中心

SONAR_UPDATECENTER_ACTIVATE=true
更新中心需要互联网连接才能请求 https://update.sonarsource.org 默认情况下处于启用状态。

HTTP_PROXYHOST=
HTTP_PROXYPORT=
HTTP 代理(默认无)

HTTPS_PROXYHOST=
HTTPS_PROXYPORT=
HTTPS 代理(默认值为 HTTP PROXYHOST 和 HTTP PROXYPORT 的值)

HTTP_AUTH_NTLM_DOMAIN=
NT 域名(如果使用 NTLM 代理)

SOCKSPROXYHOST=
SOCKSPROXYPORT=
SOCKS 代理(默认无)

HTTP_PROXYUSER=
HTTP_PROXYPASSWORD=
代理身份验证(用于 HTTP、HTTPS 和 SOCKS 代理)

HTTP_NONPROXYHOSTS=
代理例外:无需通过代理即可访问的主机列表,以“|”分隔 字符,通配符“*”可用于 HTTP 和 HTTPS 的模式匹配(默认无)(注意:始终排除 localhost 及其文字符号(127.0.0.1,...))。

记录

SonarQube 在位于同一目录的四个日志文件中生成日志(请参阅 SONAR_PATH_LOGS 下面的属性),每个进程一个:

  • 主进程(又名应用程序)记录在 sonar.log 中

  • Web 服务器(又名 Web)登录 web.log

  • Compute Engine(又名 CE)登录 ce.log

  • Elasticsearch(又名 ES)登录 es.log

所有四个文件都遵循相同的滚动策略(请参阅 SONAR_LOG_ROLLINGPOLICY 和 SONAR_LOG_MAXFILES),但它单独适用(例如,如果 SONAR_LOG_MAXFILES=4,每个文件最多可以有 4 个,即总共 16 个文件)。

所有四个文件都具有相同格式的日志:

123
2016.11.16 16:47:00 INFO ce[AVht0dNXFcyiYejytc3m][ossctceworkercallableimpl] 执行任务项目=org.sonarqube:example-java-maven类型=报告
456
id=AVht0dNXFcyiYejytc3m提交者=管理员时间=1699ms

1:时间戳。格式为 YYYY.MM.DD HH:MM:SS
YYYY:4 位数字的年份
MM:2 位数字的月份
DD:2 位数字
的日 HH:24 小时格式的 2 位数字的小时
MM:2 位数字的分钟
SS: 2 位数字秒

2:日志级别。可能的值(按重要性降序排列):ERROR、WARN、INFO、DEBUG 和 TRACE

3:进程标识符。可能的值:app(主)、web(Web 服务器)、ce(计算引擎)和 es(Elasticsearch)

4:SQ 线程标识符。可以为空。在 Web 服务器中,如果存在,它将是 HTTP 请求 ID。在计算引擎中,如果存在,它将是任务 ID。

5:记录器名称。通常是类的规范名称。包名称被截断以使整个字段最多 20 个字符

6:记录负载。该字段的内容不遵循任何特定格式,长度可能有所不同,并包含换行符。然而,某些日志将遵循约定以“| key=value”格式在有效负载中提供数据,特别是,分析代码片段的日志将以“| time=XXXXms”结尾。

SONAR_LOG_LEVEL=INFO
日志的全局级别(适用于所有 4 个进程)。支持的值为 INFO(默认)、DEBUG 和 TRACE

SONAR_LOG_LEVEL_APP=INFO
SONAR_LOG_LEVEL_WEB=INFO
SONAR_LOG_LEVEL_CE=INFO
SONAR_LOG_LEVEL_ES=INFO
每个进程的日志级别可以通过各自的属性单独控制。指定后,它们会覆盖全局级别定义的级别。支持的值为 INFO、DEBUG 和 TRACE

SONAR_PATH_LOGS=logs
日志文件的路径。可以是绝对目录或相对于安装目录。默认为 /logs

SONAR_LOG_ROLLINGPOLICY=time:yyyy-MM-dd
日志文件的滚动策略:

  • 如果值以“time:”开头,则基于时间,例如按天(“time:yyyy-MM-dd”)或按月(“time:yyyy-MM”)

  • 如果值以“size:”开头,则基于大小,例如“size:10MB”

  • 如果值为“none”则禁用。这需要由 logrotate 等外部系统来管理日志。

SONAR_LOG_MAXFILES=7
启用滚动策略时要保留的最大文件数。

  • 大小滚动策略的最大值为 20

  • 无限制的准时滚动政策。设置为零以禁用旧文件清除。

SONAR_WEB_ACCESSLOGS_ENABLE=true 访问日志是服务器接收到的所有HTTP请求的列表。如果启用,它将存储在文件 { SONAR_PATH_LOGS}/access.log 中。该文件遵循与其他日志文件相同的滚动策略(请参阅 SONAR_LOG_ROLLINGPOLICY 和 SONAR_LOG_MAXFILES)。

SONAR_WEB_ACCESSLOGS_PATTERN=%i{X-Forwarded-For} %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}" "%reqAttribute{ID}"
访问日志的格式。如果 则被忽略 SONAR_WEB_ACCESSLOGS_ENABLE=false

可能的值为:

  • common:通用日志格式,快捷方式:%h %l %u %user %date "%r" %s %b

  • combined:另一种广泛认可的格式,快捷方式:%h %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}"

  •  否则,自定义模式:请参阅 http://logback.qos.ch/manual/layouts.html#AccessPatternLayout

经过身份验证的用户登录不是用"%u"而是用"%reqAttribute{LOGIN}"(自版本 6.1 起)实现。
为匿名用户显示的值为“ -”。

"%reqAttribute{TOKEN_NAME}"如果添加了(自版本 9.5 起),则用于请求的令牌名称将添加到访问日志中。

SonarQube 的 HTTP 请求 ID 可以添加到模式中"%reqAttribute{ID}"(自版本 6.2 起)。

如果 SonarQube 位于反向代理后面,则以下值允许显示正确的远程 IP 地址:

默认值(在版本 6.2 之前为“组合”)相当于“组合 + SQ HTTP 请求 ID”: 

SONAR_WEB_ACCESSLOGS_PATTERN=%h %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}" "%reqAttribute{ID}"

数据中心版

SONAR_CLUSTER_NAME=sonarqube
集群的名称。如果同一网络上存在多个集群,则为必需。例如,这可以防止混合生产和预生产集群。这将是存储在 Hazelcast 集群中的名称,并用作 Elasticsearch 集群的名称。

SONAR_CLUSTER_SEARCH_HOSTS
集群中搜索主机的逗号分隔列表。该列表可以包含主机或主机和端口,但不能同时包含两者。项目格式 ip/hostname 仅适用于主机或ip/hostname:port 适用于主机和端口。 ip/hostname 也可以设置为搜索容器的服务名称。

SONAR_CLUSTER_SEARCH_PASSWORD
将在客户端站点上使用的 Elasticsearch 内置用户 (elastic) 的密码。如果提供,它将启用身份验证。该属性需要在整个集群中设置为相同的值。

仅搜索节点

SONAR_CLUSTER_ES_HOSTS
集群中搜索主机的逗号分隔列表。该列表可以包含主机或主机和端口,但不能同时包含两者。项目格式为 ip/hostname 仅主机或ip/hostname:port 主机和端口,同时 ip/hostname 也可以设置为搜索容器的服务名称。

SONAR_CLUSTER_NODE_NAME
在 Elasticsearch 上使用并存储在 Hazelcast 成员属性 (NODE_NAME) 中的节点名称

SONAR_CLUSTER_ES_SSL_KEYSTORE
PKCS#12 格式的密钥库的文件路径。可以是与 SONAR_CLUSTER_ES_SSL_TRUSTSTORE运行 SonarQube 的用户必须具有该文件的读取权限。如果提供密码,则为必填项。

SONAR_CLUSTER_ES_SSL_KEYSTOREPASSWORD
密钥库的密码。

SONAR_CLUSTER_ES_SSL_TRUSTSTORE
PKCS#12 格式的信任库的文件路径。可以是与 SONAR_CLUSTER_ES_SSL_KEYSTORE运行 SonarQube 的用户必须具有该文件的读取权限。如果提供密码,则为必填项。

SONAR_CLUSTER_ES_SSL_TRUSTSTOREPASSWORD
信任库的密码。

仅应用程序节点

SONAR_CLUSTER_HOSTS

 集群中所有应用程序主机的逗号分隔列表 。该值必须仅包含 应用程序主机SONAR_CLUSTER_NODE_PORT 如果不使用默认值,列表中的每一项都必须包含端口 。项目格式为 ip/hostname,  ip/hostname:portip/hostname 也可以设置为应用程序容器的服务名称。

SONAR_CLUSTER_NODE_PORT

用于与集群中每个应用程序成员进行通信的 Hazelcast 端口。默认: 9003

其他的

SONAR_NOTIFICATIONS_DELAY=60
处理通知队列之间的延迟(以秒为单位)。默认值为 60 秒。

SONAR_PATH_DATA=data
SONAR_PATH_TEMP=temp
持久数据文件(嵌入式数据库和搜索索引)和临时文件的路径。可以是绝对目录或相对于安装目录。默认值分别为 /data 和 /temp

SONAR_TELEMETRY_ENABLE=true 遥测 - 共享匿名 SonarQube 统计数据。通过分享匿名 SonarQube 统计数据,您可以帮助我们了解 SonarQube 的使用方式,以便我们改进产品,更好地为您服务。我们不收集源代码或 IP 地址。我们不与其他人共享数据。


微信扫码微信扫码 关注我们

  • 24小时咨询热线180-210-69380

  • 移动电话180-210-69380

Copyright © 2022 All Rights Reserved. 地址:上海市浦东新区崮山路538号808 苏ICP123456 XML地图