持续集成服务可以本机构建Linux软件包吗?

时间:2017-05-31 01:27:15

标签: c++ linux travis-ci rpmbuild

像TravisCI这样的CI服务可以自动构建和测试来自源代码管理的应用程序。我是C ++和Linux的新手,但似乎将编译好的linux应用程序包装成各种Linux发行版的.deb和.rpm包也是构建管道的一个非常普遍的需求。我用Google搜索了几个小时,在Travis或其他地方找不到任何文档或参考简化的机制,这使得这很容易。也许C ++开发人员习惯于自己做这种事情,所以他们只是在构建中编写脚本。

但是,当尝试为具有多个软件包的新团队和项目设置管道时,每个软件包都针对5个以上的发行版,并且想要测试生成的软件包,它是CI管道的理想选择。我们想在Bintray上部署软件包,我们有几个RPM和DEB存储库准备接收各种发行版的软件包。但是,我们找不到广泛使用的解决方案的痕迹,该解决方案采用编译的工件和包定义,然后将它们卷起来并将它们部署到这些存储库中。

是否有人有一个易于使用且自动化的解决方案来构建Linux软件包,因为它们是在部署到存储库之前在Travis中构建的?

2 个答案:

答案 0 :(得分:1)

您可以使用CPack - 它允许您编写一般包描述并根据描述构建rpm,deb和msi。

答案 1 :(得分:0)

可能不容易找到,因为一旦你设置了RPM规范文件就很简单了,这就是95%的问题出现的地方。 ;)

我让Jenkins为每个目标操作系统(CentOS 6,7,Fedora 25)启动Docker容器并构建RPM。它与任何其他“shell脚本”构建步骤没有什么不同,除了调用make之外,它调用rpmbuild