【问题标题】:Calling Ant targets dynamically in Jenkins在 Jenkins 中动态调用 Ant 目标
【发布时间】:2013-06-17 19:46:38
【问题描述】:

有没有办法在“调用 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 目标?

【问题讨论】:

    标签: ant jenkins


    【解决方案1】:

    一个简单的技巧是在targets 上使用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 会真正运行。

    【讨论】:

    • 我应该在哪里设置属性 runx?
    【解决方案2】:

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

    假设选择参数称为目标,那么您在“调用蚂蚁”构建部分中需要做的就是引用 %target%,Jenkins 将为您进行替换。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多