首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SonarQube -指定sonar.properties的位置

SonarQube -指定sonar.properties的位置
EN

Stack Overflow用户
提问于 2018-07-06 09:51:00
回答 2查看 1.7K关注 0票数 2

我试图使用SonarQube在Kubernetes上部署configMaps。

我使用的最新的7.1 图像在sonar.properties中有一个配置,嵌入在$SONARQUBE_HOME/conf/中。该目录不是空的,还包含一个wrapper.conf文件。

我希望将configMap安装在容器内的/opt/sonar/conf/以外的位置,并指定sonarQube读取属性的新路径。

有办法吗?(环境变量?JVM论点?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-07 07:09:16

不建议以任何方式修改此标准配置。但是我们可以看看SonarQube源代码。在文件中,可以找到用于读取配置文件的以下代码:

代码语言:javascript
复制
private static Properties loadPropertiesFile(File homeDir) {
    Properties p = new Properties();
    File propsFile = new File(homeDir, "conf/sonar.properties");
    if (propsFile.exists()) {
      ...
    } else {
      LoggerFactory.getLogger(AppSettingsLoaderImpl.class).warn("Configuration file not found: {}", propsFile);
    }
    return p;
}

因此,conf路径和文件名是硬编码的,如果文件不存在,则会收到警告。主目录是这样找到的:

代码语言:javascript
复制
private static File detectHomeDir() {
  try {
    File appJar = new File(Class.forName("org.sonar.application.App").getProtectionDomain().getCodeSource().getLocation().toURI());
    return appJar.getParentFile().getParentFile();
  } catch (...) {
     ...
}

所以这也是不能改变的。在此使用上述代码:

代码语言:javascript
复制
@Override
public AppSettings load() {
    Properties p = loadPropertiesFile(homeDir);
    p.putAll(CommandLineParser.parseArguments(cliArguments));
    p.setProperty(PATH_HOME.getKey(), homeDir.getAbsolutePath());
    p = ConfigurationUtils.interpolateVariables(p, System.getenv());
    ....
}

这表明您可以使用命令行参数或环境变量来更改设置。

票数 1
EN

Stack Overflow用户

发布于 2018-07-16 09:37:57

针对我的问题,我在Kubernetes部署中定义了环境变量来配置数据库设置:

代码语言:javascript
复制
      env:
      - name: SONARQUBE_JDBC_URL
        value: jdbc:sqlserver://mydb:1433;databaseName=sonarqube
      - name: SONARQUBE_JDBC_USERNAME
        value: sonarqube
      - name: SONARQUBE_JDBC_PASSWORD
        valueFrom:
          secretKeyRef:
            name: sonarsecret
            key: dbpassword

我也需要使用ldap插件,但在这种情况下不可能配置环境变量。由于/opt/sonarqube/conf/不是空的,所以我不能使用configMap将配置与图像内容解耦。因此,我构建了自己的sonarqube映像,在sonar.properties中添加了ldap jar插件和ldap设置:

代码语言:javascript
复制
# General Configuration
sonar.security.realm=LDAP
ldap.url=ldap://myldap:389
ldap.bindDn=CN=mysa=_ServicesAccounts,OU=Users,OU=SVC,DC=net
ldap.bindPassword=****

# User Configuration
ldap.user.baseDn=OU=Users,OU=SVC,DC=net
ldap.user.request=(&(sAMAccountName={0})(objectclass=user))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail

# Group Configuration
ldap.group.baseDn=OU=Users,OU=SVC,DC=net
ldap.group.request=(&(objectClass=group)(member={dn}))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51207653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档