是否有一种方法可以在'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目标?
一个简单的技巧是在target
s上使用if
属性。
<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才会实际运行。
这可能会工作得很好,但它是一个不方便改变你的构建只是为了满足詹金斯构建接口的要求。我通常这样做的方式是设置一个构建参数,比如一个"选择",让用户可以从下拉列表中选择他们想要调用的目标。
说,选择参数被称为目标那么你需要做在"调用ant的构建部分是指目标%和%詹金斯将替换给你。
您是否使用"选择"或其他类型的构建参数(例如文本)将取决于您的具体需求。