将环境变量传递给Jenkins的Ant build.xml?

时间:2014-07-18 08:12:05

标签: java jenkins continuous-integration hudson jenkins-cli

我使用Jenkins作为CI。我有一个build.xml。 Build.xml的代码如下所示。

<property name="environment" value="$environment}" />

如何将值从Jenkins传递给build.xml?我可以通过环境变量传递它吗?

5 个答案:

答案 0 :(得分:7)

您的环境变量可通过environment属性获得。 在下面的示例中,环境变量 VIEW 通过 $ {env.VIEW} 从简单的hello world ant脚本打印。将VIEW更改为感兴趣的环境变量的名称。

<?xml version="1.0" encoding="UTF-8"?>
<project name="Hello World" default="Hello" basedir=".">
    <property environment="env"/>
    <property name="HelloText" value="Hello"/>
    <target name="Hello">
        <echo>VIEW=${env.VIEW}</echo>
    </target>
</project> 

重要!请注意,需要此行才能让ant了解env.VIEW

<property environment="env"/>

答案 1 :(得分:3)

如果您的ant构建依赖于属性environment

<property
  name="environment"
  value="a_value_I_edit_just_before_run_ant_default_target_mannually" />

你可以配置你的Jenkins&#39;用参数构建的作业: enter image description here

所以Jenkins将登录(例如在Windows上):

cmd.exe /C '"ant.bat ant -file build.xml -Djenkins_environment=myValue && exit %%ERRORLEVEL%%"'

然后你可以修改你的ant构建来检查系统属性:

<property
  name="manually_edited_environment"
  value="a_value_I_edit_just_before_run_ant_default_target_manually" />

<condition property="environment"
           value="${jenkins_environment}"
           else="${manually_edited_environment}">
    <isset property="jenkins_environment" />
</condition>

如果设置jenkins_environment属性,则environment获取其值,否则environment获取manually_edited_environment的值;构建的剩余部分仍取决于属性environment

如果您无法正确匹配-DpropertyName,请使用echoproperties ant task来记录所有系统属性。

答案 2 :(得分:0)

你的蚂蚁脚本应如下所示: -

<target name="test" >
    <property environment="env" />
    <echo>BUILD_NUMBER: ${env.BUILD_NUMBER}</echo>
</target>

答案 3 :(得分:-1)

您可以使用构建参数(例如:myParameter)设置属性,并使用${myParameter}的ant脚本获取它们。

请确保您不要在jenkins的参数名称中使用点,因为在ant脚本中获取它们可能会出现问题。

至于环境变量,我不知道,抱歉。

答案 4 :(得分:-1)

考虑如上所述的参数化构建,例如,您必须在作业中设置名为environment的变量并从user获取其值。现在您可以使用property name="environment" value="$environment}在build.xml中引用其值