能够从新代码中获得即时反馈很重要。你获得反馈的速度越快,问题越早得到解决。
获得反馈的一种常见方法是在新代码之后运行测试,但这会导致其他问题。当代码正在编译并且正在运行测试时,开发人员无法在测试完成之前继续工作。
Jenkins 通过提供持续集成功能解决了该问题。合并新代码后,Jenkins 可以自动进行构建,运行测试和部署应用程序。
这篇文章将介绍什么是 Jenkins,以及使用它的利弊。
什么是 Jenkins
Jenkins®是一个开源的,用 Java 编写的开源持续集成(CI)
服务器,可以自托管以自动执行任何项目的构建周期。Jenkins 为软件项目提供 CI 服务,可以通过命令行或 Web 应用程序服务器启动它。
你可以设置 Jenkins 来监视 GitHub,Bitbucket 或 GitLab 等地方的任何代码更改,并使用 Maven 或 Gradle 等工具自动进行构建;可以利用 Docker 和 Kubernetes 等容器技术,启动测试,然后在生产中执行回滚或前滚之类的操作。
什么是持续集成?
在详细了解 Jenkins 如何提供 CI 之前,我相信了解什么是 CI 很重要。CI 是一种开发实践,其中开发人员一天几次将代码集成到共享存储库中。当有人将新代码推送到共享存储库中时,测试会在非开发人员(测试人员)的计算机上自动运行。
CI 的工作流程可为你提供快速反馈。如果更改中断了构建,则在将代码提交到共享存储库后不久,你将知道。控制台还提供了详细的日志消息,因此可以识别出哪些更改导致了构建失败。另外,通过在 CI 服务器中使用公共存储库,你可以将构建部署通知到其他开发人员和测试人员。
与Jenkins的持续集成
Jenkins 在 CI 中大量使用,以允许代码自动构建,部署和测试。让我们考虑以下情况:先构建应用程序的完整源代码,然后将其部署在测试服务器上进行测试。这是开发软件的理想方法,但是在实践中,这是不实际的。开发人员将不得不暂停工作,直到获得测试结果为止,这可能需要几个小时。整个过程是手动的,因此可能会出现人为错误,这可能会浪费时间。
当然,在上述情况下,它会导致软件交付缓慢和客户不满意。这导致对开发人员可以在其中触发上述过程自动发生的需求。Jenkins 正是在这里发挥 CI 的作用。
使用 Jenkins,你可以将其连接到 Mercurial,SVN,Git 等代码存储库。因此,所有开发人员要做的就是配置 Jenkins定期检查存储库,并在有新内容时尝试构建,测试和部署新代码。这有助于节省大量开发人员的时间,使他们可以专注于自己的工作。
使用Jenkins 的优点
- Jenkins 是开源的(免费),并且拥有庞大的社区
- 有许多可用的插件使 Jenkins 易于使用
- Jenkins 用 Java 编写,这意味着它是可移植的
- 开发人员可以在其他地方花费更多的时间:大多数集成和测试由自动化的构建和测试系统进行管理。
- 加快开发速度:大多数集成工作是自动完成的,从而减少了集成问题。从长远来看,这可以在项目的整个生命周期中节省时间和金钱。
- 更高质量的软件:可及早发现问题并立即解决。这样可以使软件保持可以随时安全发布的状态。
使用Jenkins 的缺点
- 成本和时间: Jenkins 必须在服务器上运行(成本),并且经常需要系统管理员的关注(时间)。你不能指望建立了詹金斯,然后让它自己运行。该系统将需要经常更新和维护。
- 需要投入一些资金才能开始使用: 大多数团队遇到的一些主要障碍是初始设置,拖延或先前尝试建立 Jenkins的尝试失败。许多团队都知道这是最佳做法,但是在进行更紧急的编码工作时会忽略它。
- 测试可能会中断: 需要实时更新,如果未更新它们,则这些测试将停止提供价值。