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



我有一个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在一个从机上构建这个任务,当任务构建完成时,我希望Jenkins调用将启动这个应用程序的ant脚本,然后我希望应用程序实际使鼠标在Jenkins从机上移动。目前,Jenkins报告构建成功,但似乎什么都没有发生。

更新

当我使用failonerror="true"运行exec时,没有错误打印到Jenkins日志中。Jenkins只是说了mytarget:,就好像它即将开始打印该目标的日志信息,然后什么都没发生,构建成功完成,从服务器上什么都没有发生(应用程序没有启动)。

更新2

我刚刚有一个有趣的发现。我用/Applications/Dictionary.app替换了${basedir}/myApp.app行,当我用Jenkins运行它时,它打开了字典一小会儿,然后立即关闭了它。我的应用程序也会出现这种情况吗?我的剧本在开头有一个延迟,所以它会在这段时间结束吗?

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

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

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

相关内容

  • 没有找到相关文章

最新更新