4

我正在使用 Jenkins 作为 CI。我有一个 build.xml。Build.xml有如下代码。

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

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

4

5 回答 5

12

您的环境变量可通过 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> 

重要的!请注意,为了让env.VIEWant 理解,需要此行:

<property environment="env"/>
于 2015-01-28T19:38:01.110 回答
5

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

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

你可以配置你的 Jenkins 的工作来构建参数: 在此处输入图像描述

所以 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 任务来使 ant 记录所有系统属性。

于 2014-12-23T11:09:35.313 回答
0

您的 ant 脚本应如下所示:-

<target name="test" >
    <property environment="env" />
    <echo>BUILD_NUMBER: ${env.BUILD_NUMBER}</echo>
</target>
于 2016-07-21T11:03:06.293 回答
-1

您可以使用构建参数(即:myParameter)设置属性,并使用${myParameter}.

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

至于环境变量,我不知道,对不起。

于 2014-07-18T08:17:41.920 回答
-1

考虑到上述情况下的参数化构建,例如,您必须设置environment在作业中调用的变量并从用户那里获取其值。现在您可以使用 build.xml 引用它的值property name="environment" value="$environment}

于 2014-10-01T08:57:32.407 回答