玩2& Cloudbees:无法将替换解析为值

时间:2013-03-15 14:45:06

标签: cloudbees playframework-2.1

我正在部署我的游戏! 2.1 Cloudbees上的应用。

我的 application.conf

# Database configuration
# ~~~~~ 
db.default.driver=com.mysql.jdbc.Driver
db.default.url=${MYSQL_URL_DB}
db.default.user=${MYSQL_USERNAME_DB}
db.default.password=${MYSQL_PASSWORD_DB}

我在Cloudbees配置中定义了这些值:

$ bees config:list -a myself/my-app 
Application Parameters:
  proxyBuffering=false
  MYSQL_URL_DB=jdbc:cloudbees://my-app
  MYSQL_USERNAME_DB=my-app
  MYSQL_PASSWORD_DB=yummy
Runtime Parameters:
  java_version=1.7

我使用引发Jenkins的git(git push cloudbees cloudbees:master)发布我的应用。但是在部署应用程序时,我会进入Jenkins日志:

  

[错误](编译:编译)   com.typesafe.config.ConfigException $ UnresolvedSubstitution:   conf / application.conf:16:无法解析替换为值:   $ {MYSQL_PASSWORD_DB}

还有什么可以让Jenkins知道配置吗?我误解了什么吗?

感谢您的帮助!

阿尔

3 个答案:

答案 0 :(得分:6)

你可以添加“?”到开头,所以它将被视为一个覆盖。

db.default.url=${?MYSQL_URL_DB}

如果您愿意,也可以使用此方法处理后备情况。

db.default.url=mysql://fallback_url
db.default.url=${?MYSQL_URL_DB}

如果MYSQL_URL_DB不存在,将使用fallback_url。

答案 1 :(得分:1)

此配置在运行时注入,而不是构建时。你必须找到一种方法来使sbt构建忽略未解决的替换。 似乎可能的解决方法是将MYSQL_URL_DB = foo等设置为构建环境变量,以便检查不会中断,因为它们实际上不会在您的配置中注入

答案 2 :(得分:1)

我使用这样的配置:

https://github.com/CloudBees-community/play2-clickstart/blob/master/conf/application.conf

和这样的构建命令:

java -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -jar /opt/sbt/sbt-launch-0.11.3-2.jar -Dsbt.log.noformat=true clean compile test dist

它并不担心缺少的环境变量。 我的猜测是有一个scala宏或触发编译器解决这些变量的东西。添加它们很好。

我修改了clickstart,以便在需要时设置默认值。