我在自动化/开发公司的IT部门工作,我们即将实施CI /将CI添加到我们的工具集中。而且我们很难选择一个。

目前,我们一直在考虑以下系统:


Jenkins
CircleCI
TravisCI

问题:系统应具有的CI软性的关键属性是什么,我们应该根据它们进行比较?


编辑:我们是从CI期望标准的东西:从构建应用程序,运行测试(单元/集成/性能/ ..),保存统计信息以及通过电子邮件/在页面上(报告)提供信息。

问题我们不知道哪些功能还有更多,如果不知道,那是什么?这就是我要在“关键属性”一词下寻找的东西。上面的名称仅供参考,我在寻找“为什么使用此或那个”而不是简化的“使用此或那个”的答案。

我们正在.NET(C#)环境中进行开发,其中包含一些用C ++ / VBA编写的库。

评论

如果您可以详细说明自己在CI工具中正在寻找的内容,这将有所帮助。您有什么要求,您有什么需要?例如:您将使用哪种语言构建工件?您对SaaS模型感兴趣还是希望托管自己的CI?还有其他CI工具,为什么要把这三个工具固定下来?向我们提供更多信息将使您可以根据自己的需求量身定制答案,否则,您将获得已经可以在Google上找到的通用答案:hackernoon.com/…

看,您的问题很广泛,因为您还没有尝试过这些工具。您只需几个命令即可轻松将它们安装在容器中,然后尝试一下。如果您几乎没有经验,则可以随机选择,使用一种工具获得经验,然后如果该工具停止为您服务,则可以提出更具体的问题,以了解所需的功能以及哪些工具可能具有这些功能或哪些功能您的当前工​​具所需的插件才能获得该功能。

进行编辑后,我现在将其关闭,作为以下问题的重复项:stackoverflow.com/questions/1438390/comparison-of-ci-servers

在Continuous Integration软件中要求关键属性的问题是,您将获得与选择几乎所有其他工具相同的答案。例如,avi的答案可能同样适用于代码审查工具,版本控制系统或Wiki或几乎任何其他内容。

jenkins与teamcity的良好链接,这将有助于决定使用哪种CI工具进行linkedin.com/pulse/jenkins-vs-teamcity-amir-najjar

#1 楼

通常,不同的CI软件解决方案之间有五个主要区别。


成本:该软件是开源的,免费的还是专有的?您的DevOps团队是否已经有软件预算,或者您希望比较免费选项?
维护:该软件是您需要自己托管和维护的东西,还是作为服务提供?如果您需要自己托管它,您是否有可以进行维护的团队成员可用?如果将其作为服务提供,那么您的代码位于何处?
安全性:构建机器的托管位置是否存在安全性或合规性问题? CI软件进入您的SCM所需的权限是否被很好地理解?
社区:CI软件周围是否有很好的社区,包括插件和对您使用的技术的支持?遇到问题时容易获得支持或进行故障排除吗?
UX:该软件的易用性如何? CI软件是否支持存储在SCM中的脚本来执行所需的任务?报告易于理解还是需要一些培训?


评论


您的清单没有提到托管服务可能具有任意未记录的限制或错误,这些缺陷可能很难或无法避免。以我的经验,Circle CI和Jenkins具有这种局限性,可以完全否定托管服务的优势。

–MichaëlLe Barbier
17年7月31日在9:23

很好的清单。我还要添加可扩展性/插件。即使您在社区中隐式提及它,我也会说它们可以是排他性的,因为某些工具提供了自己的插件,而他们却拥有强大的支持社区。

– gmolaire
17年5月5日在21:40

#2 楼

您使用的SCM系统对于选择CI至关重要。

例如,使用专用/内联网解决方案,几乎排除了CircleCITravisCI,因为它们仅支持基于云的GitHub和/或Bitbucket

Jenkins那里有支持许多SCM系统的插件,请参阅Jenkins支持哪些SCM工具?但是,使用不太流行或包装/自定义的SCM系统可能需要开发新的插件。

出于类似原因(配置,位置/访问),建筑物/测试框架/基础设施的特殊性也可能很重要。方法和兼容性/支持)。