簡體   English   中英

Qt的連續構建系統

[英]Continuous build system for Qt

我是Qt / C ++開發人員。 我想設置一個持續集成環境,在提交源代碼之后,它會觸發一個構建過程,為我正在使用的3個平台構建代碼:

  • Linux的
  • OS X.
  • Win32的

如果可能,我該如何設置此類環境。 歡迎任何提示或鏈接。 我已經閱讀了關於詹金斯的內容,但我找不到任何好的教程。

我還建議Jenkins有幾個原因:

  • 它將在您列出的所有平台上運行。
  • 它可以配置為在更新存儲庫時啟動構建(提示:將作業配置為“輪詢SCM”,您不必使用SCM工具來讓它告訴Jenkins開始構建)。
  • 它為單元測試提供了很好的支持(主要是通過插件)。 [你的項目正在進行單元測試,對吧?]
  • 價格合適

一個更大的問題是,AFAIK,Qt並沒有真正對其他平台進行交叉編譯。 使用Jenkins(以及相應的插件),您應該能夠解決這個問題。

快速想到的一種方法是在每個平台上都有一個Jenkins實例。 每個實例都負責為自己的平台構建版本。 在構建結束時,創建的工件都被放入一個共同的共享位置。

我想到了兩個解決方案:

BuildBot

BuildBot是一個用Python編寫的高度可定制的持續集成系統。 主組件提供了一個很好的基於Web的GUI來監視和觸發構建; slave組件放在目標機器上(通常是虛擬機,但它們可能是其中一個開發人員的Mac筆記本電腦)。 Docs足以構建一個基本系統,定制可能有點棘手(至少對我而言)。 使用VC系統提供的提交/推送掛鈎,您可以輕松激活主服務器並跨從服務器觸發構建。 它還支持增量構建(如果您的項目很大,則必須支持)。

CDASH

CDake的作者開發, CDash是一個網絡應用程序,收集來自整個網絡的構建,不完全是你要求的,但我認為值得一試。 非常強大,如果你有一個開發人員團隊可以在他們的機器上連續提交構建結果到服務器(如果你使用CMake它幾乎是透明的)。 你不能像Buildbot那樣從服務器觸發構建,但你可以設置一堆帶有cron的VM來檢查更改,以防執行構建並將結果發送到CDash

Jenkins通過所有主要源控制系統的插件支持此功能。 如果你認真考慮使用Jenkins(我強烈推薦它),可以考慮購買John Ferguson Smart的Jenkins:The Definitive Guide

當然有可能。 大多數版本控制系統都能夠在服務器端執行自定義腳本。 他們中的一些(例如git)具有在本地實現相同的鈎子。 看看git的post-commit鈎子

您所需要的只是創建一個觸發跨平台構建的腳本。

大多數版本控制系統允許使用提交后掛鈎來啟動構建等事件。 或者,可以將構建系統配置為定期輪詢源控制存儲庫並管理它們自己的構建調度(這是我們使用Jenkins的方式)。

需要記住的是跨平台進行完整構建需要多長時間以及該間隔內的典型簽入次數。 如果您擁有合理規模的團隊或有限的構建服務器資源,您可能會發現批處理簽入是進行持續集成構建的更好方法。 否則你的構建系統很快就會試圖追趕。

至於是否可以在所有目標平台上構建,這取決於您的工具鏈。

暫無
暫無

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

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