将基于eclipse / cdt的构建集成到持续集成中

时间:2012-06-20 12:35:21

标签: eclipse jenkins eclipse-cdt

我必须重用一个目前在eclipse中开发的主要C ++项目,使用CDT,mingw和cdt托管构建功能(没有外部makefile或构建环境)。该项目本身由许多子项目组成。

我希望将该构建集成到一个持续集成服务器(即jenkins)中,从而能够实现无头构建的自动化。

到目前为止,我设法检查了项目(简单来自jenkins),并使用eclipse使用以下命令构建无头模式:

C:\prog\EclipseCdt\eclipse -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import %WORKSPACE%\project1 -import %WORKSPACE%\project2 -import %WORKSPACE%\project3 -build all

但这还不够:

  • 构建是异步的:上一个命令返回(它实际上是分叉),而我希望它能保持上下文,直到我得到一个结果(就像在Linux上使用make或在Windows上使用devenv
  • 我无法提取构建日志(理想情况下将它们放在文件中):要集成在我的连续信息中,我需要能够解析构建日志以显示有趣的信息(想想破碎的文件)
  • 理想情况下,我想从Eclipse获得一个直接状态(返回代码),表示通过或失败。

知道怎么做这个行为吗?

请注意:

  • 使用备用(外部)构建系统目前不是一个选项(我必须保留cdt托管构建,它有很多复杂的历史记录)
  • 我已经看过堆栈溢出和谷歌并没有找到办法去做,尽管我的需求明显简单
  • 我目前正在使用Windows 7 / mingw 4.5.2 / Eclipse IDE for C / C ++ Developers版本:Indigo Release Build id:20110615-0604但我觉得问题是x-platform

1 个答案:

答案 0 :(得分:7)

看起来如果我以交互方式从cmd开始eclipse,它会分叉,如果从bat脚本开始,它就不会。所以把前一行放在詹金斯就好了。

注意:

  • 您需要添加-data参数来定义工作台的位置(我每次都清理构建)
  • 像往常一样,责怪窗户并加上报价......
  • --launcher.suppressErrors:如果出现问题,可以防止eclipse显示弹出窗口(实际上没有显示,因此阻止构建)

Final(working!)命令:

C:\prog\EclipseCdt\eclipse --launcher.suppressErrors -nosplash -data "%WORKSPACE%" -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import "%WORKSPACE%\project1" -import "%WORKSPACE%\project2" -import "%WORKSPACE%\project3" -build all 

修改

  • 添加了--launcher.suppressErrors