如何在 TeamCity 的 Tomcat 配置 (server.xml) 中引用变量(JVM 或环境)?
How to reference variables (either JVM or environment) in TeamCity's Tomcat config (server.xml)?
我正在尝试设置支持 HTTPS 的 TeamCity 服务器。为此,我必须在 …/conf/server.xml
.
中指定密钥库文件路径和密钥库密码
我当前的连接器在那里定义如下:
<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
,您可以验证:
env JAVA_OPTS="-Dkeystore.path='$KEYSTORE_PATH'" ./bin/configtest.sh
您可以选择将此行添加到 configtest.sh
之前 catalina.sh
的 exec
:
export JAVA_OPTS="$JAVA_OPTS $TEAMCITY_SERVER_OPTS"
我正在尝试设置支持 HTTPS 的 TeamCity 服务器。为此,我必须在 …/conf/server.xml
.
我当前的连接器在那里定义如下:
<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
,您可以验证:
env JAVA_OPTS="-Dkeystore.path='$KEYSTORE_PATH'" ./bin/configtest.sh
您可以选择将此行添加到 configtest.sh
之前 catalina.sh
的 exec
:
export JAVA_OPTS="$JAVA_OPTS $TEAMCITY_SERVER_OPTS"