有没有办法用外部sonar.properties文件启动一个sonarqube服务器?

时间:2015-03-09 21:28:37

标签: sonarqube sonarqube-5.0

我想知道是否有办法使用外部sonar.properties和wrapper.conf文件启动SonarQube(5.0.1)服务器。

我正在寻找类似于apache" -f"选项 -

/apache2/bin/apachectl -f /path/to/httpd.conf

感谢。

=============================================== =========

如下面的答案中所述,我尝试使用环境变量引用属性。这适用于某些属性。恩。 sonar.jdbc.username& sonar.jdbc.password

对于我来说,作为具有多个环境变量的属性值,它不起作用。

实施例。 sonar.jdbc.url = JDBC:MySQL的:// $ {ENV:MYSQL_HOST}:$ {ENV:MYSQL_PORT} /声纳= ?了useUnicode =真安培;的characterEncoding = UTF8&安培; rewriteBatchedStatements =真

这是我得到的例外 -

2015.03.17 11:48:33 INFO  web[o.s.c.p.Database]  Create JDBC datasource for=  jdbc:mysql://${env:MYSQL_HOST}:${env:MYSQL_PORT}/sonar?useUnicode=3Dtrue&c=
haracterEncoding=3Dutf8&rewriteBatchedStatements=3Dtrue
2015.03.17 11:48:33 ERROR web[o.a.c.c.C.[.[.[/sonar]]  Exception sending co= ntext initialized event to listener instance of class org.sonar.server.plat= form.PlatformServletContextListener
java.lang.IllegalStateException: Can not connect to database. Please check = connectivity and settings (see the properties prefixed by 'sonar.jdbc.').

=============================================== ===========

我也试过只有一个env变量 -

$echo $MYSQL_DB_URL
jdbc:mysql://devdbXXX:6000/sonar?useUnicode=true

获得此异常 -

--> Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.


WrapperSimpleApp: Encountered an error running main: org.sonar.process.MessageException: Bad format of JDBC URL: ${env:MYSQL_DB_URL}
org.sonar.process.MessageException: Bad format of JDBC URL: ${env:MYSQL_DB_URL}
<-- Wrapper Stopped

如果我对mysql主机网址进行硬编码,则会有效。

与URL格式有关,还在调试......

2 个答案:

答案 0 :(得分:4)

在UBUNTU:是的,您可以提供外部文件。如果你在sonarqube bin文件夹中看到sonar.sh文件

#! /bin/sh

#
# Copyright (c) 1999, 2006 Tanuki Software Inc.
#
# Java Service Wrapper sh script.  Suitable for starting and stopping
#  wrapped Java applications on UNIX platforms.
#

#-----------------------------------------------------------------------------
# These settings can be modified to fit the needs of your application

# Default values for the Application variables, below. 
# 
# NOTE: The build for specific applications may override this during the resource-copying
# phase, to fill in a concrete name and avoid the use of the defaults specified here.
DEF_APP_NAME="SonarQube"
DEF_APP_LONG_NAME="SonarQube"

# Application
APP_NAME="${DEF_APP_NAME}"
APP_LONG_NAME="${DEF_APP_LONG_NAME}"

# Wrapper
WRAPPER_CMD="./wrapper"
WRAPPER_CONF="../../conf/wrapper.conf"

# Priority at which to run the wrapper.  See "man nice" for valid priorities.
#  nice is only used if a priority is specified.
PRIORITY=

# Location of the pid file.
PIDDIR="."

您可以在此处定义包装文件的路径WRAPPER_CONF=,对于sonar.properties,您可以在sonarqube conf文件夹中创建文件链接,并将其重定向到您保存文件的路径。另外一个更难的选择是编辑上面的start.sh文件以接受这些参数作为标志。 (例如,-sp用于声纳属性,-wc用于包装器conf)

答案 1 :(得分:1)

可以通过引用环境变量来外部化sonar.properties中的值。

sonarqube / 5.0.1 / conf / sonar.properties header&gt;

# Property values can:
 # - reference an environment variable, for example sonar.jdbc.url= ${env:SONAR_JDBC_URL}

看起来这种方法需要最少的文件操作,并解决了我不想对属性值进行硬编码的问题,因为它们会根据环境进行更改。