Linux 上 buildAgent 的 TeamCity 默认 jdk

Sea*_*yle 5 teamcity

我正在尝试在 64 位 ubuntu 上使用 32 位 java 运行 TeamCity(默认)构建代理,我创建了一个 [TeamCity]/bin/setenv.sh,其中包含:

JAVA_HOME=/usr/lib/jvm/ia32-java-6-sun
Run Code Online (Sandbox Code Playgroud)

使用 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
Run Code Online (Sandbox Code Playgroud)

还有一个“[buildAgent]/jre”链接

[buildAgent]/jre -> /usr/lib/jvm/ia32-java-6-sun/jre/
Run Code Online (Sandbox Code Playgroud)

当我执行 '[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
Run Code Online (Sandbox Code Playgroud)

从输出中可以看出,服务器使用的是 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 主路径。