Environment variable handling behavior change in 6.5?

Since upgrading to version 6.5, we've noticed that it seems there has been a change to TC's envrionment variable handling between those set for the agent host user, those set in the build configuration's environment variables and, in the case of MAVEN_OPTS, the value set in the Maven build step's "JVM Arguments" setting.  Prior to upgrade, we had found that the following order of precedence seemed to apply (1 "wins" with regard to MAVEN_OPTS):
1. Build configuration "build parameters" env.MAVEN_OPTS
2. Agent host user environment (export MAVEN_OPTS=XXXX)
3. Maven build step value of "JVM command line parameters"

This has always seemed like a defect but we adjusted our configurations to accomodate.  The behavior seems to have changed since 6.5.  Can you describe the precise behavior in 6.5 for me so I understand how this is working now?  Since upgrading we have experienced a bunch of out of heap failures because the MAVEN_OPTS wasn't the expected one.  I'd like to know how to configure our builds now.  Based on experimentation, it looks like "JVM command line parameters" wins, but I'd like to understand what role agent user env plays now.

Comment actions Permalink

Hi Leon,

In 6.5 MAVEN_OPTS is no longer effective since TeamCity now runs Maven via a direct java execution, not an mvn script invocation as in previous versions. You should use "JVM command line parameters" for your memory settings.

However MAVEN_OPTS is still effective for nested maven executions (if you use exec plugin for running mvn, for example)

Sorry for inconvenienvce.


Please sign in to leave a comment.