在Jenkins中动态调用Ant目标

时间:2013-06-20 19:36:50

标签: ant jenkins

有没有办法动态调用'Invoke Ant'构建步骤中的Ant目标?假设您有一个build.xml:

<target name="1" description="1">
    <exec executable="${RES_DIR}/1.sh" failonerror="true">
    </exec>
</target>

<target name="2" description="2">
    <exec executable="${RES_DIR}/2.sh" failonerror="true">
    </exec>
</target>

<target name="3" description="3">
    <exec executable="${RES_DIR}/3.sh" failonerror="true">
    </exec>
</target>

并且希望您的Jenkins构建都使用相同的build.xml,但是能够为每个构建调用某些目标。我不想在每次需要创建项目时对这些目标进行硬编码,因为我希望它能够自动完成。这是可能的还是您必须事先创建项目并手动设置Ant目标?

2 个答案:

答案 0 :(得分:1)

一个简单的技巧可以是使用if s上的target属性。

例如:

<target name="run" depends="1,2,3" />

<target name="1" description="1" if="run1">
    <exec executable="${RES_DIR}/1.sh" failonerror="true">
    </exec>
</target>

<target name="2" description="2" if="run2">
    <exec executable="${RES_DIR}/2.sh" failonerror="true">
    </exec>
</target>

<target name="3" description="3" if="run3">
    <exec executable="${RES_DIR}/3.sh" failonerror="true">
    </exec>
</target>

这样,您调用目标run并将属性runX设置为任意值(true通常是一个不错的选择)。只有目标X才会真正运行。

答案 1 :(得分:0)

这可能会运行正常但是为了满足Jenkins构建接口要求而更改构建有点不方便。 我通常这样做的方法是设置一个构建参数,称为“选择”,并让用户可以从该下拉列表中选择要调用的目标。

假设选择参数被称为目标,那么你在'invoke ant'构建部分中需要做的就是引用%target%,Jenkins将替换你。

您是否选择“选择”或其他类型的构建参数(例如文本)取决于您的具体需求。