我们99%是Java商店,我们使用Jenkins作为CI工具。最近,我们需要编译和构建一些.NET项目,并且我能够设置一个Jenkins从站来实现这一点。
有一个项目作为构建过程的一部分编译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进行构建。
答案 0 :(得分:0)
编译什么? AS3? FLA? SWF? SWC?
有mxmlc
和compc
。两者都有ANT任务,以及命令行和.jar。
在我的flash项目中,我们使用mxmlc
编译AS3代码到SWF。没有涉及GUI
但是,要发布FLA,需要运行Flash Builder GUI,但只要用户不需要输入(例如弹出错误或警告消息时),它就可以正常运行(<] p
您提到buildandpost
实际上已取得成功并执行buildandpost_withFlash
所做的所有操作,因此如果使用buildandpost
时遇到问题,那么
<强> 编辑: 强>
以下是有关使用mxmlc ant任务的文档
http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf678b2-7ffc.html
但是,如果您不熟悉Flash,则无法将.jsfl
文件转换为mxmlc
步骤
基本上你有一个黑盒子(.jsfl
)并且你不知道底层发生了什么,因此你无法将它翻译成另一个脚本。如果您说它将.as3
编译为.swf
,我们本可以尝试一些东西,但是您说它也会吐出其他文件......所以这里有相当多的逻辑{ {1}},仅仅是.jsfl
无法实现的。如果你不能将黑盒子翻译成Jenkins可以轻松处理的脚本,你的另一个选择是按原样运行blackbox,即运行该.exe文件。
我只能提出以下建议:
的 Open Excel on Jenkins CI 强>
不要介意mxmlc
部分,请将excel.exe
和flash.exe
替换为参数,但必须提供完整路径。