我正在使用 Jenkins 作为 CI。我有一个 build.xml。Build.xml
有如下代码。
<property name="environment" value="$environment}" />
如何从 Jenkins 向 build.xml 传递值?我可以通过环境变量传递它吗?
我正在使用 Jenkins 作为 CI。我有一个 build.xml。Build.xml
有如下代码。
<property name="environment" value="$environment}" />
如何从 Jenkins 向 build.xml 传递值?我可以通过环境变量传递它吗?
您的环境变量可通过 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.VIEW
ant 理解,需要此行:
<property environment="env"/>
如果您的 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 记录所有系统属性。
您的 ant 脚本应如下所示:-
<target name="test" >
<property environment="env" />
<echo>BUILD_NUMBER: ${env.BUILD_NUMBER}</echo>
</target>
您可以使用构建参数(即:myParameter)设置属性,并使用${myParameter}
.
只需确保不要在 jenkins 的参数名称中使用点,因为在 ant 脚本中获取它们可能会出现问题。
至于环境变量,我不知道,对不起。
考虑到上述情况下的参数化构建,例如,您必须设置environment
在作业中调用的变量并从用户那里获取其值。现在您可以使用 build.xml 引用它的值property name="environment" value="$environment}