我们是99%的Java商店,我们使用Jenkins作为CI工具。最近,有一些。net项目需要我们编译和构建,我可以设置一个Jenkins slave来完成这个任务。
有一个项目,作为构建过程的一部分编译Flash应用程序。它带有build.xml
并在Ant下运行。有两个目标,一个叫buildandpost
,另一个叫buildandpost_withFlash
。它运行这个编译任务:
<target name="compile" description="compile flash and copy to dist" >
<exec dir="src/flash"
executable="C:/Program Files/Adobe/Adobe Flash CS3/flash.exe"
searchpath="true" >
<arg line="compileProject.jsfl"/>
</exec>
<echo message="Flash exited" />
<fail message="Flash Compile produced errors">
<condition>
<isfileselected file="src/flash/compile_log.txt">
<and>
<contains text="Error" casesensitive="no"/>
<contains text="Warning" casesensitive="no"/>
</and>
</isfileselected>
</condition>
</fail>
</target>
当使用buildandpost_withFlash
目标运行Jenkins时,我注意到Jenkins会启动编译任务,然后坐在那里不做任何事情,直到我杀死工作。日志上什么也没写。运行buildandpost
任务,它做buildandpost_withFlash
所做的一切,没有编译工作。
我打开构建服务器,运行Ant buildandpost_withFlash
目标,令我惊讶的是,在编译发生时打开了GUI。我什么都不用做。GUI在编译后关闭,Ant继续运行,但我现在意识到Jenkins无法运行compile
任务,因为没有与它的任务相关联的终端。
有没有一种方法来运行这个编译而不打开GUI?我可以编译VisualStudio项目而不打开VisualStudio。我可以用Flash做到这一点吗?这是CS3。否则,我将无法使用Jenkins进行构建。
编译什么到什么?AS3吗?佛罗里达州吗?主权财富基金?SWC吗?
有mxmlc
和compc
。两者都有ANT任务,以及命令行和.jar。
mxmlc
编译AS3代码到SWF。不涉及GUI。对于发布FLAs,虽然需要Flash Builder GUI运行,但是它运行得很好,没有任何问题,只要不需要用户输入(例如当弹出错误或警告消息时)
你提到buildandpost
实际上成功了,并且做了buildandpost_withFlash
所做的一切,所以如果使用buildandpost
有问题,那么?
编辑:
下面是关于使用mxmlc ant任务的文档http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf678b2-7ffc.html
但是,如果您不熟悉Flash,您将无法将.jsfl
文件转换为mxmlc
步骤
基本上你有一个黑盒(.jsfl
),你不知道下面发生了什么,因此你不能把它翻译成另一个脚本。如果你说它将.as3
编译为.swf
,我们可以尝试一些东西,但你说它也会吐出其他文件…所以在.jsfl
中有相当多的逻辑,这是mxmlc
无法实现的。如果你不能将黑盒转换成Jenkins可以轻松处理的脚本,你的另一个选择是运行黑盒,也就是运行。exe文件。
我只能建议如下:
Open Excel on Jenkins CI
不要介意excel.exe
部分,将其替换为flash.exe
和compileProject.jsfl
,后面跟着一个参数,但是您必须提供完整的路径。