2

我正在部署我的 Play!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

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

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

还有什么可以让 Jenkins 了解配置吗?我是不是误会了什么?

谢谢你的帮助!

阿尔班

4

3 回答 3

7

你可以加 ”?” 到开头,因此它将被视为覆盖。

db.default.url=${?MYSQL_URL_DB}

如果您愿意,您还可以使用这种方法处理回退情况。

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

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

于 2013-07-25T09:39:26.857 回答
1

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

于 2013-03-16T07:28:30.487 回答
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 以设置默认值以备不时之需。

于 2013-06-26T07:38:49.027 回答