TeamCity在Linux上默认jdk for buildAgent

我想在ubuntu 64位上运行一个使用32位java的TeamCity(默认)构build代理,我创build了一个[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开始'我得到这个:

 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,但是构build代理正在运行'/ usr / bin'(在我的例子中是64位)中的java。

仔细检查'[buildAgent] /bin/findJava.sh',它看起来像脚本运行一个“哪个java”,并find默认的系统java之前,甚至尝试任何提供的参数/文件夹。 我认为应该在系统java之前find[buildAgent] / jre。

什么是正确的方式来指定用于生成代理的Java版本,这可能是一个不同于服务器的版本?

我应该在检查java的系统path之前修改find​​Java.sh来检查它的参数吗?

您需要在项目的设置页面中设置buildAgent的JDK版本。

您指定的JRE版本适用于Teamcity服务器。 如果您进入项目的“编辑configuration设置”页面,则会出现“构build步骤”链接。 在“生成步骤”页面中,可以指定JDK和JDK主目录path。