0

我正在尝试让声纳在 OpenShift 上工作。当我尝试在 sonar.properties 文件中使用环境变量时,声纳不会解析它们。

结果看起来像:

2013.06.18 17:22:19 INFO  o.s.c.p.Database  Create JDBC datasource for jdbc:mysql://${env:OPENSHIFT_MYSQL_IP}:${env:OPENSHIFT_MYSQL_PORT}/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
2013.06.18 17:22:20 ERROR o.s.c.p.Database  Can not connect to database. Please check connectivity and settings (see the properties prefixed by 'sonar.jdbc.').
org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "OPENSHIFT_MYSQL_IP}:${env:OPENSHIFT_MYSQL_PORT}"'.)
    at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) ~[commons-dbcp-1.3.jar:1.3]
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) ~[commons-dbcp-1.3.jar:1.3]
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) ~[commons-dbcp-1.3.jar:1.3]
    at org.sonar.core.persistence.DefaultDatabase.checkConnection(DefaultDatabase.java:140) [sonar-core-3.5.1.jar:na]
    at org.sonar.core.persistence.DefaultDatabase.start(DefaultDatabase.java:69) [sonar-core-3.5.1.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_19]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_19]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_19]
    at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0_19]

我试图了解声纳中的可变分辨率是如何工作的,这样我就可以开始弄清楚 OpenShift 出了什么问题。

4

1 回答 1

0

我可以使用 git://github.com/wenhao/openshift-sonar.git 让 Sonar 运行,并稍作修改:

  • 删除了默认的 jbossews 示例应用程序(git rm -r pom.xml src/webapps/ROOT.war
  • 仅从 repo 复制到 ROOT/ 、 sonar-3.3.1/ 和 .openshift/action_hooks/pre_start_jbossews-1.0
  • 将 pre_start_jbossews-1.0 重命名为 pre_start_jbossews(由于 v2 墨盒重命名的变化)
  • 修改ROOT/WEB-INF/classes/sonar-war.properties:

    #SONAR_HOME=${env:OPENSHIFT_REPO_DIR}/webapps/sonar-3.3.1 SONAR_HOME=/var/lib/openshift/51c0c3c1e0b8cd74800000dc/app-root/repo/webapps/sonar-3.3.1

  • 混帐添加。

  • git 提交/推送

我不太清楚为什么 ROOT/WEB-INF/classes/sonar-war.properties 不能解析 env 变量,但 sonar-3.3.1/conf/sonar.properties 可以很好地解析它们:

sonar.jdbc.username:                       ${env:OPENSHIFT_MYSQL_DB_USERNAME}
sonar.jdbc.password:                       ${env:OPENSHIFT_MYSQL_DB_PASSWORD}
于 2013-06-19T19:32:50.473 回答