2017-05-31 28 views
1

像TravisCI這樣的CI服務自動從源代碼控制構建和測試應用程序。我不熟悉C++和linux,但似乎將編譯好的linux應用程序封裝到.deb和.rpm包中,以供各種Linux發行版使用,這對構建管道來說也是非常普遍的需求。我搜索了幾個小時,在Travis或其他地方找不到任何文檔或參考精簡機制,這使得這很容易。也許C++開發人員習慣於自己做這種事情,所以他們只是在構建中編寫腳本。持續集成服務可以本機構建Linux包嗎?

但是,當試圖爲一個新的團隊和項目設置流水線時,它們都是針對5個以上的發行版,並且想要測試結果包,因此它是CI管線的最佳人選。我們希望在Bintray上部署這些軟件包,我們有幾個RPM和DEB存儲庫準備接收各種發行版的軟件包。但是,我們無法找到廣泛使用的解決方案的痕跡,這個解決方案需要編譯的工件和程序包定義,然後將它們彙總並部署到這些回收站中。

有沒有人有一個易於使用和自動化的解決方案來構建Linux包,因爲它們是在部署到存儲庫之前在Travis中構建的?

+0

您應該針對特定問題提出具體問題。由於Stack Overflow隱藏了你的密切原因:*「有些問題要求我們推薦或查找書籍,工具,軟件庫,教程或其他非本地資源,因爲它們傾向於吸引自以爲是的答案和垃圾郵件,因此不適合Stack Overflow。相反,請描述問題以及迄今爲止解決問題的方法。「* – jww

回答

1

您可以使用CPack - 它允許您編寫一個通用包描述並從描述中構建rpm,deb和msi。

0

找到它可能並不容易,因爲一旦您設置了RPM spec文件,這是微不足道的,這是95%的問題出現的地方。 ;)

我有Jenkins爲每個目標OS(CentOS 6,7,Fedora 25)旋轉Docker容器並構建RPM。它與其他任何「shell腳本」構建步驟沒有區別,除了不呼叫make,它調用rpmbuild

+0

感謝您的迴應。我明白在我們完成這些工作後,事情會變得微不足道。然而,從客觀的角度來說,設置一個完整的流程並不是件輕而易舉的事情。你描述的場景完全不同。您提到了原始文章中所需的大約50%的任務。您描述使用Jenkins這是一個CI應用程序,而不是像Travis這樣的CI服務,這意味着它必須在VM上託管和維護。你也沒有提到測試軟件包。再次,我們正在尋找的是不同的。我們正在探索CPack,這很有希望。 – solvingJ

+0

我的回答是,我不認爲在創建基本RPM構建後,創建RPM時不會有任何Jenkins或Travis特定的任何內容。 –