![TeamCity Linux 上 buildAgent 的默认 jdk](https://linux22.com/image/591083/TeamCity%20Linux%20%E4%B8%8A%20buildAgent%20%E7%9A%84%E9%BB%98%E8%AE%A4%20jdk.png)
我正在尝试在 64 位 ubuntu 上使用 32 位 java 运行 TeamCity(默认)构建代理,我创建了一个 [TeamCity]/bin/setenv.sh,其中包含:
JAVA_HOME=/usr/lib/jvm/ia32-java-6-sun
运行带有 32 位 jre 的服务器时,这可以正常工作,但对于代理则不行:我已在 [buildAgent]/conf/buildAgent.properties 中尝试了这些行
JAVA_HOME=/usr/lib/jvm/ia32-java-6-sun
JRE_HOME=/usr/lib/jvm/ia32-java-6-sun/jre
还有一个 '[buildAgent]/jre' 链接
[buildAgent]/jre -> /usr/lib/jvm/ia32-java-6-sun/jre/
当我执行'[TeamCity]/bin/runAll.sh start'时,我得到了这个:
Using CATALINA_BASE: /srv/TeamCity
Using CATALINA_HOME: /srv/TeamCity
Using CATALINA_TMPDIR: /srv/TeamCity/temp
Using JRE_HOME: /usr/lib/jvm/ia32-java-6-sun
Using CLASSPATH: /srv/TeamCity/bin/bootstrap.jar:/srv/TeamCity/bin/tomcat-juli.jar
Starting TeamCity build agent...
Java executable is found in '/usr/bin/..'.
Starting TeamCity Build Agent Launcher...
Agent home directory is /srv/TeamCity/buildAgent
Current Java runtime version is 1.6
Lock file: /srv/TeamCity/buildAgent/logs/buildAgent.properties.lock
Using no lock
Done [16436], see log at ../logs/teamcity-agent.log
从输出中可以看出,服务器使用的是 32 位 jdk,但构建代理正在运行“/usr/bin”中的 java(在我的情况下是 64 位)。
仔细检查 '[buildAgent]/bin/findJava.sh',似乎脚本运行了 'which java',并在尝试任何提供的参数/文件夹之前找到了默认的系统 java。我认为它应该在系统 java 之前找到 '[buildAgent]/jre'。
指定构建代理使用的 Java 版本的正确方法是什么?该版本可能与服务器的版本不同?
在检查 java 的系统路径之前,我是否应该修改 findJava.sh 来检查其参数?
答案1
您需要在项目的设置页面中设置buildAgent的JDK版本。
您指定的 JRE 版本适用于 Teamcity 服务器。如果您转到项目的“编辑配置设置”页面,则会出现“构建步骤”链接。在构建步骤页面中,您可以指定 JDK 和 JDK 主路径。