2017-05-31 67 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特定的任何内容。 –