我一直在读一些关于像Jenkins这样的CI服务器的文章,我想知道:在什么时候它是有用的呢?
因为对于一个只有5个类和10个单元测试的小项目来说,没有真正的需求。
在这里,我们有大约1500个单元测试,它们在大约90秒内通过(在旧的Core 2双工作站上)(因为它们真的在测试“单元”,因此非常快)。我们的规则是,当测试失败时,我们不能提交代码。
因此,每个开发人员都会启动所有的测试,以防止出现倒退。
显然,因为所有的开发人员都会启动所有的测试,所以一旦一个开发人员对另一个开发人员进行更改(如果有的话),我们就会发现由于相互冲突的更改而导致的错误。
我仍然不太清楚:我应该设置像Jenkins这样的CI服务器吗?它会带来什么?
它只是对速度增益有用吗?(在我们的情况下不是问题)
它有用吗?因为旧的构建可以重新创建吗?(但我们可以用变化莫测的方法来处理这件事,检查一下旧的转速)
基本上,我理解这可能是有用的,但我不知道确切的原因。
任何考虑到我上述各点的解释都将是非常欢迎的。
发布于 2011-11-23 05:12:26
它只是对速度增益有用吗?(在我们的情况下不是问题)
任何花在循环过程中的时间都是你可能花在开发流程中的时间。
你也会节省时间的里程碑,因为你理想的是构建完整的打包和准备就绪的比特,可以直接刻录到CD,上传到网络等。
它有用吗?因为旧的构建可以重新创建吗?(但我们可以用变化莫测的方法来处理这件事,检查一下旧的转速)
不,你不能重建建筑。您可以使用它创建的构建,并将其保留到保留设置抛出为止。
您可以在build服务器上构建它,而不是在某些Dev的机器上构建它。
在这里,我们有大约1500个单元测试,它们在大约90秒内通过(在旧的Core 2双工作站上)(因为它们真的在测试“单元”,因此非常快)。我们的规则是,当测试失败时,我们不能提交代码。
此外,您不希望能够在代码上运行自动化集成或端到端测试,并捕捉单元测试无法捕捉的问题吗?
您可能不希望在开发框上运行这些程序,因为设置和维护该环境将是一件痛苦的事情。集成测试的执行速度也很慢。
到什么时候才有用呢?
和其他投资一样,这也是一项投资。
使用它一次,你可能会出现在后面,或只达到收支平衡。在多个项目中使用它,您可能会领先。
这还取决于您所做的应用程序的类型。
如果您制作的web应用程序需要部署到Java应用服务器(或IIS )上,那么CI就成为一个无需考虑的问题。如果将数据库作为项目的一部分,则相同。手动执行部署是痛苦的,您的QA团队(如果您有)在某一时刻每天都需要它。
此外,您可能希望了解您的需求和问题如何与的12步改进代码保持一致。特别是2,3和10 (虽然它们都很有趣和重要)。
发布于 2011-11-23 08:01:25
到什么时候才有用呢?
您可能还不需要CI,但当您进入测试阶段时,我认为它将变得有用。Jenkins是在几个小时内设置的,它将简化您的测试并帮助避免愚蠢的错误(特别是当您匆忙进行快速修复时)。
发布于 2011-11-23 10:12:43
对我来说,如果你的团队有超过1名成员,CI就会变得有趣。
你必须停止认为CI是“为我运行测试的另一台PC”。关于有一个定义和自动化的构建过程和发布管理的CI。
CI是创建您的软件发行版的唯一权威实体。如果它没有建立在CI的基础上,它就不会发生。
有了CI,你就有了自动化的限制,这将向你展示所有的手动调整,黑客和快捷键,你已经到位,只是不工作的CI,应该避免在第一。
它避免了以下问题:
优点(只是太多而不能提及):
https://softwareengineering.stackexchange.com/questions/121210
复制相似问题