Jenkins 教程
Jenkins教程旨在为初学者和专业人士提供。我们的教程提供了Jenkins的所有基本和高级概念,如Jenkins安装、Jenkins配置、Jenkins流水线等。
Jenkins是一个用Java编程语言编写的开源自动化工具,允许持续集成。
Jenkins构建和测试我们的软件项目,不断地使开发人员更容易集成项目变更,并使用户更容易获取最新的构建。
Jenkins是什么
Jenkins是一个用Java编程语言编写的开源自动化工具,允许持续集成。
Jenkins 构建 并 测试 我们的软件项目,不断地使开发人员更容易集成项目变更,并使用户更容易获取最新的构建。
它还允许我们通过与许多测试和部署技术集成来持续 交付 我们的软件。
Jenkins通过使用流水线以及自动化其他常规开发任务,为几乎任何语言和源代码库的组合提供了建立持续集成或持续交付环境的简单方法。
借助Jenkins的帮助,组织可以通过自动化加快软件开发过程。Jenkins提供各种开发生命周期的流程,包括构建、文档、测试、打包、分阶段部署、静态分析等。
Jenkins通过插件实现CI(持续集成)。插件用于允许各种DevOps阶段的集成。如果您想要集成特定工具,您必须安装该工具的插件。例如:Maven 2项目、Git、HTML发布器、Amazon EC2等。
例如: 如果任何组织正在开发一个项目,Jenkins将不断测试您的项目构建并在开发的早期阶段显示错误。
Jenkins可能执行的步骤例如:
- 使用构建系统(如Gradle或Maven Apache)执行软件构建
- 执行shell脚本
- 归档构建结果
- 运行软件测试
工作流程:
Jenkins的历史
Kohsuke Kawaguchi是一位在SUN Microsystems工作的Java开发人员,他厌倦了不断构建代码和修复错误。在2004年,他创建了一个名为 Hudson 的自动化服务器,用于自动化构建和测试任务。
2011年,Sun Microsystems的所有者Oracle与Hudson开源社区产生了争议,因此他们分叉了Hudson并将其更名为 Jenkins 。
Hudson和Jenkins继续独立运行。但在短时间内,Jenkins吸引了很多贡献者和项目,而Hudson仅保留了32个项目。随着时间的推移,Jenkins变得更加流行,而Hudson不再维护。
什么是持续集成
持续集成(CI)是一种开发实践,开发人员需要定期将更改提交到共享的代码库中。每次提交在代码库中被构建。这使得开发团队能够及早发现问题。
持续集成要求开发人员进行定期构建。通常的做法是每次提交代码时都会触发一次构建。
Jenkins中的持续集成
让我们考虑一个场景,应用程序的完整源代码被构建并部署到测试服务器上进行测试。这听起来像是一个完美的开发软件的方式,但这个过程有很多问题。
- 开发团队必须等待完整的软件开发以获取测试结果。
- 测试结果可能显示多个错误的可能性很高。开发人员很难找到这些错误,因为他们必须检查整个应用程序的源代码。
- 这减慢了软件交付的过程。
- 由于缺乏与架构或编码问题、构建失败、测试状态和文件发布上传相关的持续反馈,软件质量可能会下降。
- 整个过程是手动操作的,这增加了频繁失败的风险。
从上述问题可以明显看出,不仅软件交付的过程变慢,软件质量也下降。这导致客户不满意。
为了解决这样的问题,需要一个系统,开发人员可以持续地触发每一次对源代码的更改进行构建和测试。
这就是持续集成(CI)的全部内容。Jenkins是最成熟的持续集成工具,让我们看看Jenkins是如何克服上述缺点的。
让我们看一下Jenkins的持续集成的常见流程图:
让我们看看Jenkins如何工作 。上图代表以下功能:
- 首先,开发者将代码提交到源代码仓库中。同时,Jenkins会定期检查仓库是否有变更。
- 在提交后不久,Jenkins服务器会找到源代码仓库中发生的变更。Jenkins会记录这些变更并开始准备新的构建。
- 如果构建失败,则相关团队将收到通知。
- 如果构建成功,则Jenkins服务器会将构建部署到测试服务器上。
- 测试完成后,Jenkins服务器会生成反馈并通知开发者有关构建和测试结果的信息。
- 它将继续检查源代码仓库中的变更,并重复整个过程。
使用Jenkins的优缺点
优点:
- 它是一个开源工具。
- 它免费使用。
- 它不需要额外的安装或组件,安装方便。
- 配置简单。
- 它支持1000多个插件,方便您的工作。如果插件不存在,您可以编写脚本并与社区共享。
- 它是基于Java开发的,因此具有可移植性。
- 它是跨平台的,适用于各种操作系统和平台,如OS X、Windows或Linux。
- 支持容易,因为它是开源的并且被广泛使用。
- Jenkins还支持基于云的架构,因此我们可以在基于云的平台上部署Jenkins。
缺点:
- 其界面过时,与当前用户界面趋势不符合用户友好性。
- 难以维护,因为它在服务器上运行,并需要一些作为服务器管理员的技能来监控其活动。
- CI由于一些小的设置更改经常中断。CI将暂停,因此需要开发团队的关注。
Jenkins架构
Jenkins采用主从架构来管理分布式构建。在这种架构中,主节点和从节点通过TCP/IP协议进行通信。
Jenkins架构包含两个组件:
- Jenkins主节点/服务器
- Jenkins从节点/构建服务器
Jenkins Master
Jenkins主服务器是Jenkins的主要服务器。它是一个由war文件驱动的网页仪表板。默认情况下,它运行在8080端口。通过仪表板,我们可以配置工作/项目,但构建是在节点/从属中进行的。默认情况下,一个节点(从属)被配置并在Jenkins服务器上运行。我们可以使用IP地址、用户名和密码使用ssh、jnlp或webstart方法添加更多节点。
服务器或主服务器的工作是处理:
- 调度构建工作。
- 将构建分派给节点/从属进行实际执行。
- 监控节点/从属(根据需要上线和下线)。
- 记录和展示构建结果。
- Jenkins的Master/Server实例也可以直接执行构建工作。
Jenkins Slave
Jenkins从属用于执行主服务器分派的构建工作。我们可以将一个项目配置为始终在特定的从属机器上运行,或者在特定类型的从属机器上运行,或者简单地让Jenkins选择下一个可用的从属/节点。
正如我们所知,Jenkins是使用Java开发的,是与平台无关的,因此Jenkins的主服务器和从属/节点可以在任何服务器上配置,包括Linux、Windows和Mac。
上面的图表是不言自明的。它由一个负责管理三个Jenkins Slaves的Jenkins Master组成。
先决条件
在学习Jenkins之前,您应该对测试和Java有基本的了解。
教程对象
我们的Jenkins教程旨在帮助初学者和专业人士。
问题
我们保证您在本Jenkins教程中不会遇到任何问题。但如果有任何错误,请在联系表单中提出问题。