Jenkins + Cmake + JIRA =多个相互依存项目的CI?

时间:2011-06-02 15:18:27

标签: continuous-integration cmake jenkins

我们的系统中有许多小项目在Linux上运行(Slackware 7-11,慢慢迁移到RHEL 6.0)。大约50-100个应用程序和15-20个库。几乎所有应用程序都使用我们的一个或多个库。我们的源代码树看起来像这样:

/app1
/app2
/app3
/include
/foo/app4
/foo/app5
/foo/app6
/foo/lib1
/foo/lib2
/lib/lib3
/lib/lib4
/lib/include

现在,我已经做了一些工作来创建一些CMakeLists.txt文件并构建了大多数lib和一些应用程序。使用cmake构建我相当自在。我用v2.6做了这个,我最近(一小时前)升级到2.8。上述每个项目都有自己的CMakeLists.txt文件,专门用于构建和安装项目(尚无包装)。

我需要使用并强制执行持续集成。我已经和Jenkins一起安装和玩了,从我看到的我印象非常深刻。我也在评估JIRA做我们的问题跟踪。

为了让事情顺利进行,我已经在所有的lib上完成了cmake安装,因此应用程序可以在文件系统中找到它们。标头安装在/ usr / local / include和libs到/ usr / local / lib。这是一件坏事吗?告诉cmake寻找lib的源目录,使用export interface还是最近推出的ExternalProject_Add会不会更好?

因为我将使用Jenkins,所以无法保证cmake可以找到源或构建目录。当然,我可以告诉Jenkins按顺序构建项目(或者至少首先构建依赖项)。如果对库的更新破坏了另一个项目的构建,那么我想这将由具有3/4智慧的人来决定。

提前谢谢

1 个答案:

答案 0 :(得分:4)

  

为了让事情顺利进行,我已经在所有的lib上完成了cmake安装,因此应用程序可以在文件系统中找到它们。标头安装在/ usr / local / include和libs到/ usr / local / lib。这是一件坏事吗?

不,这不是一件坏事,但你的构建应该从头开始重现资源。如果需要在构建过程之外的系统中预先安装事物,那么可移植性和修复构建错误等问题将成为一个问题。如果你能够像你提到的那样以其他方式做到这一点,我建议那样做,但如果它能让你的构建更长,那么你需要感受到它。我的意识形态是一切都应该移动到一个新的詹金斯机器与一个帽子的新安装,再次这总是不可实现,但需要努力。

  

因为我将要使用Jenkins,所以我无法保证   cmake可以找到源或构建目录。当然,我可以说   Jenkins按顺序构建项目(或者至少构建项目   依赖性第一)。如果对库的更新破坏了构建   另一个项目,然后我想这将取决于有3/4智慧的人   确定这一点。

我在相互依赖的工作中做的一件事就是成功建立一个工作会触发依赖它的工作。因此,例如,如果A依赖于B,并且A失败,则B将永远不会运行,并且在构建A中创建问题的人对其负责等等。这可以防止破坏的构建的级联影响,这些影响都是由依赖性损坏引起的。我建议您将文件保存在其作业文件夹中的特定版本中,并为依赖项指定所需文件的位置。再次保持您的构建分离和清洁。

  

我也正在评估JIRA进行问题跟踪。

我强烈推荐JIRA作为公司的问题跟踪系统;您可能希望查看this Jenkins插件以进行集成。如果您使用git,并且不介意在网站外托管您的代码,我会GitHub发布一个镜头。

古德勒克,你似乎走在了正确的轨道上。