使用Jenkins进行持续集成的方法

45次阅读
没有评论

问题描述

想要了解如何使用Jenkins进行持续集成。他已经了解了基本的使用方法,包括项目设置、设置源代码管理和构建项目。但是他的组织中没有人能够清楚地告诉他们在实际项目中如何使用CI工具。他们对CI工具的范围和扩展性不清楚。用户还对Jenkins pipeline这个术语感到困惑,想知道它是什么以及为什么要使用它。用户的团队采用敏捷开发,每个迭代结束后,他们都需要将代码提交到主分支。他们计划为每个迭代创建一个新的分支,并根据分支创建Jenkins任务。他想知道这种方法是否正确。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

什么是持续集成(Continuous Integration)?

持续集成大致意味着每次提交代码时,都会自动构建和测试代码,并在最后显示红/绿灯来表示构建状态。

什么是持续部署(Continuous Deployment)?

持续部署将持续集成推进了一步,每当出现绿灯时,会自动部署代码。

CI工具的使用方法

在实际项目中,CI工具的使用方法取决于你所构建/部署的软件、人员和流程。首先,你需要构建工具并开始使用它们,观察结果。如果一切顺利,可以继续按照自己制定的路径前进;如果遇到问题,需要解决它们。

CI工具的范围和扩展性

自动化程度越高越好。自动化不仅意味着节省时间,还意味着所有自动化的内容都以某种脚本或工具的形式编码,这样你就不会过于依赖个人,而是更好地适应团队的增长。

使用Jenkins管理发布

在纯粹的CI/CD中,最终阶段不再需要发布,因为每次提交都会直接实时部署到生产环境。在另一端,你可能每年发布3次,每次晚2个月。每个项目都会在这个范围内,由情况决定(其中包括利益相关者和可用资金-快速的CI/CD并不是免费的)。

Jenkins Pipeline是什么?

“Pipeline”只是一个说法,表示你提交-构建-测试-部署的过程。这只是个比喻。比喻的意象是,你把提交放入管道的一端,然后在另一端得到一个运行中的生产服务器。

使用分支进行构建

你的方法是正确的,为每个迭代创建一个新的分支,并根据分支创建Jenkins任务。这样可以确保每个分支的每次提交都经过测试。这对于及早发现问题非常有用,尤其是如果你的测试套件需要较长时间运行,或者没有无限的测试环境可以定期启动和关闭。

评论:1. 你的意思是直接推送到主分支而不是创建拉取请求吗?2. 推送到主分支是真正的CI。如果每个开发人员的提交都创建拉取请求(或者至少每天一次),那么拉取请求可能是可以接受的。3. 如果分支中的代码出现问题,应该阻止将其合并到主分支(即生产环境)。4. @030 分支中的代码能够正常工作并不能保证合并到主分支后仍然能够正常工作。必须重新进行验证。但这不是CI。5. 我同意@Dan的观点。CI要求每个更改都必须与主分支(无论是哪个分支)进行持续集成。分支不是持续的,因为它允许团队创建一个并行区域,其中没有任何提交与主分支集成和验证。而且你等待的时间越长,你与现实的距离就越远。6. 在分支中测试的代码,如果你的测试在运行测试之前将代码与主分支合并,那么它确实保证在合并到主分支后仍然能够正常工作。据我所知,这是大多数流行的CI实现的默认设置。7. @jayhendren:所以你进行了两次测试:一次是将更改集成到分支中,然后再次测试合并到主分支后的结果。我的意思是,第一次测试通过并不能保证第二次测试通过。而且第二次测试如果失败,你无法得知问题的原因:是主分支中的更改还是分支中的更改?哪一个?而且你甚至不能将合并提交到主分支(即不能将分支中集成的任何更改集成到主分支)直到找到并修复测试中发现的所有问题。是的,我承认这是瀑布式开发:)8. 不,我只测试一次。”我的意思是,第一次测试通过并不能保证第二次测试通过。”如果你的测试套件在测试之前对主分支进行合并,那么是的,它可以保证第二次测试通过。这绝对是CI:代码不断地进行合并(集成)。

以上是使用Jenkins进行持续集成的解决方案。希望对你有所帮助!

正文完