如何在TeamCity的Tomcat配置(server.xml)中引用变量(JVM或环境)?
问题描述:
我正在尝试使用HTTPS支持设置TeamCity服务器。为此,我必须在…/conf/server.xml
中指定密钥库文件路径和密钥库密码。如何在TeamCity的Tomcat配置(server.xml)中引用变量(JVM或环境)?
我现在的连接器定义有如下:
<Connector
…(some more attributes here)…
keystoreFile="${keystore.path}" keystorePassword="${keystore.pass}"/>
每当我跑env TEAMCITY_SERVER_OPTS="-Dkeystore.path='$KEYSTORE_PATH'" ./bin/configtest.sh
,我得到这样的错误:
WARNING: configured file:[/home/app/teamcity/${keystore.path}] does not exist.
(/home/app/teamcity/
是哪里的TeamCity解包) (KEYSTORE_PATH是一个正确定义的环境变量,我可以改写一个特定的值,结果是一样的)
这意味着,TEAMCITY_SERVER_OPTS
不是真的用于为TeamCity服务器设置任意JVM选项,对吧?
如果是这样,我该如何传递一些值并在配置中使用它们?我认为硬编码是不好的。
(如果此事确实,我使用Ubuntu 14.04在这里)
答
TEAMCITY_SERVER_OPTS
用来传递额外的JVM选项,但只有这样做,当你运行teamcity-server.sh
脚本。 configtest.sh
是Tomcat发行版的一部分,在这种情况下不知道TeamCity变量。如果您有JAVA_OPTS
而不是尝试,你可以验证:
export JAVA_OPTS="$JAVA_OPTS $TEAMCITY_SERVER_OPTS"
env JAVA_OPTS="-Dkeystore.path='$KEYSTORE_PATH'" ./bin/configtest.sh
可选,你可以前的exec
catalina.sh
这一行添加到configtest.sh