簡體   English   中英

為基於C ++ / Qt的項目構建服務器/持續集成建議

[英]Build server / continuous integration recommendation for C++ / Qt-based projects

我正在尋找為基於Qt的C ++項目實現構建服務器。 服務器需要從Subversion檢出必要的代碼/資產,構建可執行文件,組裝安裝項目的工件,以及構建安裝媒體文件。 目標平台和(粗略)工具鏈是:

  • Windows(32位和64位): qmake,nmake,msbuild,wix工具鏈。 最終結果是安裝程序EXE和DVD映像。
  • Mac OS X: qmake,make,自定義bash腳本來組裝包。 最終結果是磁盤映像和DVD映像中的應用程序包。
  • Ubuntu(32位和64位): qmake,make,debuild-based腳本。 最終結果是DEB文件和DVD圖像的集合。
  • Fedora(32位和64位): qmake,make,基於rpmbuild的腳本。 最終結果是RPM文件和DVD映像的集合。

因此,至少有4個構建代理(如果32位和64位不能在同一個盒子上完成,可能更多)和7個配置。 開源項目是首選,但這不是絕對的要求。

我看到的大多數工具似乎都適用於Java(Jenkins,CruiseControl等)或.Net(CruiseControl.net等)。這些工具可以與C ++工具鏈一起使用,還是我會不斷地與系統作斗爭? 你過去使用過的任何東西都可以和Qt / C ++一起使用嗎?

我使用Jenkins構建和打包許多基於qmake,cmake和makefile的C ++項目。

有cmake,qmake和msbuild的插件 ,但也可以運行任何命令行腳本。

我使用Jenkins進行打包沒有問題,因為它只是項目中的另一個命令行步驟。

有很好的插件可以監視編譯器產生的警告/錯誤的數量(我通常使用GCC)。

它還具有矩陣構建,允許您使用編譯器標志,預處理器變量,平台等的不同組合多次構建項目。我設置的一個項目是在兩個平台上具有5個布爾預處理器標志的矩陣構建,然后2 ^ 6 = 64個構建。 這些可能需要一些設置才能正確。

在這里你可以看到一個簡單的例子:

持續集成服務器 - 哈德森

我認為Hudson,jenkins和builbot值得一試。 浪費一兩天評估並嘗試快速示例將幫助您自信地選擇。

我看到的大多數工具似乎都適用於Java(Jenkins,CruiseControl等)或.Net(CruiseControl.net等)。這些工具可以與C ++工具鏈一起使用,還是我會不斷地與系統作斗爭? 你過去使用過的任何東西都可以和Qt / C ++一起使用嗎?

任何具有合理能力的CI系統都將擁有一個允許您執行構建命令所需的任何程序的部分。

這是我要考慮的:

  • CI系統是否在您選擇的系統上運行
  • 它是否允許您輕松查看日志
  • 它是否與您的測試運行器集成
  • 它是否與您的代碼覆蓋率報告集成(例如BullseyeCoverage w / C ++&Qt)
  • 它會以合理的方式發布您的文件以滿足您的需求
  • 如有必要,將提供文件的存檔/存儲(例如pdbs&lib * .so.debug)
  • 如果CI系統不支持功能X,您是否必須為每個支持的OS /系統編寫它
  • 是CI系統/ UI方便使用。

我使用CruiseControl完成了上述操作,大多數事情都非常簡單。 我在make或qmake中編寫了所有內容,並簡單地調用了我需要執行的命令。 對於單元測試和代碼覆蓋集成,我將內容輸出到XML並將其轉換為CruiseControl支持的內容。

我的建議,看看推薦的CI系統,並根據上述標准進行檢查。

我正在使用buildbot 我已經使用它4年了,我覺得很開心。

它是一個用python編寫的應用程序,它運行在服務器上,可以管理各種操作系統上的多個客戶端。 我目前正在使用Windows XP,Windows 7,Debian,Ubuntu和CentOS構建奴隸。 我的項目是C ++,其中一個(最終用戶GUI)是用Python制作的。 但是我們還與其他框架集成,用於GUI之外的其他功能。

buildbot的真正好處在於它可以通過在從屬服務器上運行命令行來實現。 有了這個,你可以做任何你想做的事。 甚至在Windows系統上使用Visual Studio進行編譯! 從這些命令行,您可以將所有輸出集中在服務器上,並且可以訪問。

您也可以在此網站上找到引用其中許多內容的替代方案。 免責聲明:3年前我看過它,我不知道它是否仍然准確。

詹金斯在開發這樣的定制服務方面確實非常受歡迎,即使在這些年之后,考慮到這個問題已經有7年了。

Felgo還為Qt提供持續集成和交付(CI / CD)服務。 它支持桌面平台以及iOS,Android和嵌入式目標。 博客文章中描述了完整的功能集。

免責聲明:我是Felgo的軟件開發人員

哈德森或詹金斯非常好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM