詹金斯在屏幕上运行ANT执行官(明显)

时间:2013-06-26 19:08:53

标签: ant jenkins

我有一个build.xml文件,最后包含以下行:

<ant dir="${basedir}/subfolder" target="mytarget" />

然后在子文件夹中,我有另一个build.xml文件,其中包含以下内容:

<target name="mytarget">
    <exec executable="open">
        <arg value="${basedir}/myApp.app" />
    </exec>
</target>

myApp.app应用程序旨在在屏幕上可见,而不是在后台执行。这是一款在Automator中设计的应用程序,它具有鼠标移动和点击功能。我设置Jenkins在slave上构建这个任务,当构建任务时我希望Jenkins调用ant脚本来启动这个应用程序,然后我希望应用程序实际上让鼠标在Jenkins slave上移动。现在Jenkins报告了一个成功的构建,但似乎没有发生任何事情。

更新

当我用failonerror="true"运行exec时,没有错误打印到Jenkins日志。 Jenkins只是说 mytarget:好像它即将开始打印该目标的日志信息,然后没有任何反应,构建成功完成,从站上没有任何事情发生(应用程序未启动)

更新2

我刚才有一个有趣的发现。我用${basedir}/myApp.app替换了行/Applications/Dictionary.app,当我用Jenkins运行它时,它打开字典一小秒钟,然后立即关闭它。我的应用程序是否会发生这种情况而没有任何显示?我的脚本在开始时有延迟,那么它可能会在那段时间内关闭吗?

1 个答案:

答案 0 :(得分:0)

open命令只是启动应用程序,但不关心其生命周期。它正在启动应用程序并将正在运行的线程返回给Ant。然后Ant终止exec任务,所以目标,所以构建,所以Ant本身。

我认为解决方案是将-W选项添加到open,以便它“等待它打开的应用程序(或已经打开的应用程序)退出”。

<exec executable="open">
    <arg value="-W" />
    <arg value="${basedir}/myApp.app" />
</exec>