如何为Maven项目配置Jenkins作业
Jenkins是一个广泛使用的自动化服务器,在现代软件开发中扮演重要角色。它通过自动化构建、测试和部署应用程序等任务,帮助团队简化持续集成和持续交付(CI/CD)流程。
Jenkins的关键优势之一是其灵活性。它能轻松集成各种工具和技术,适应不同的项目需求。
在之前的文章中,我们学习了如何使用Docker Compose设置Jenkins和Jenkins代理。在本教程中,我们将学习什么是Jenkins作业以及如何为Maven项目设置它们。
什么是Jenkins作业?
在Jenkins中,作业是一个任务或过程,如构建、测试或部署应用程序。它还可以帮助运行具有特定步骤和条件的项目的自动化测试。
使用Jenkins作业,可以在代码更改时自动运行测试。Jenkins将从版本控制(如Git)克隆源代码,编译代码,并根据要求运行测试。
这些作业还可以安排在以后运行,提供按需运行测试的灵活性。这有助于使测试更快、更一致。
Jenkins作业还可以在使用webhooks推送到远程存储库时触发,实现无缝的持续集成和开发。
Jenkins作业的不同类型
Jenkins支持多种类型的作业项目,每种都设计用于不同的目的。根据项目的复杂性及其需求,我们可以选择最适合我们需求的Jenkins作业类型。
让我们快速讨论Jenkins中可用的不同类型作业:
自由风格项目
这是Jenkins中的标准作业类型,流行且广泛使用。它从一个SCM拉取代码,串行运行构建步骤,然后执行后续任务,如保存工件和发送电子邮件警报。
流水线
Jenkins流水线是一组工具,通过在Jenkins内部创建持续交付工作流,帮助自动构建、测试和部署代码。
流水线使用流水线领域特定语言(DSL)语法将整个构建和部署过程定义为代码。流水线提供了直接在Jenkins中建模和管理简单或复杂工作流的工具。
Jenkins流水线的定义写入名为jenkinsfile的文本文件中,可以提交到项目的源代码控制存储库。
多配置项目
多配置项目最适合需要运行多个设置的项目,例如在不同环境中测试或为特定平台创建构建。
在构建共享许多相似步骤的情况下,它很有帮助,否则需要手动重复。配置矩阵允许我们定义要重用的步骤,并自动为不同的构建组合创建多轴设置。
多分支流水线
多分支流水线允许我们为项目的每个分支设置不同的Jenkinsfiles。如果代码存储库中有Jenkinsfile,Jenkins会自动搜索并为每个分支运行正确的流水线。
这非常有用,因为Jenkins处理为每个分支管理单独的流水线。
组织文件夹
使用组织文件夹,Jenkins可以监视GitHub、Bitbucket、GitLab或Gitea上的整个组织。每当它找到包含分支或拉取请求的存储库(其中包含Jenkinsfile)时,它会自动设置多分支流水线。
Maven项目
使用Maven项目,Jenkins可以无缝构建Maven项目。Jenkins利用POM文件自动处理设置,大大减少了手动配置的需要。
如何为Maven项目设置Jenkins作业
在继续配置Maven项目的Jenkins作业之前,必须先在Jenkins中配置和设置Maven集成插件。
最初,除非安装了Maven集成插件,否则不会显示Maven项目的选项。
在Jenkins中安装Maven集成插件
可以使用以下步骤安装Maven集成插件:
步骤1 登录Jenkins并导航到“Manage Jenkins”>“Manage Plugins”页面。
步骤2 在“Manage Plugins”页面上,从左菜单选择“Available plugins”,搜索“Maven integration plugin”。选择插件并单击页面右上角的“Install”按钮。
步骤3 成功安装后,重新启动Jenkins。导航到“Manage Jenkins”>“Manage Plugins”页面,从左菜单选择“Installed plugins”。Maven集成插件应列在已安装插件列表中。
成功安装Maven集成插件后,我们需要在Jenkins中配置Maven。
在Jenkins中配置Maven
可以通过以下步骤在Jenkins中配置Maven:
步骤1 导航到“Manage Jenkins”>“Tools”窗口。
步骤2 向下滚动到“Maven installations”部分。
步骤3 单击“Add Maven”按钮。
使用适当的名称填写“Name”必填字段(我将名称更新为“Maven_Latest”)。
接下来,勾选“Install automatically”复选框,并选择要安装的适当版本的Maven。我们将在“Version”下拉列表中使用最新版本(3.9.10)。
单击“Apply”和“Save”保存配置。
这样,我们就在Jenkins中配置了Maven,现在完全准备好为Maven项目创建Jenkins作业。
为Maven项目配置Jenkins作业
我们将为测试自动化项目设置一个Jenkins作业,该作业将运行API自动化测试。这个GitHub上可用的Maven项目包含使用Java中的REST Assured库编写的API自动化测试。
可以通过以下步骤配置Maven项目的Jenkins作业:
步骤1 在Jenkins主页上单击“New Item”。
步骤2 从作业名称列表中选择Maven项目,并为作业添加名称。
单击“OK”按钮继续。
接下来,Jenkins将带我们到作业的配置页面。
步骤3 在“Source Code Management”部分选择“Git”。
输入存储库URL(https://github.com/mfaisalkhatri/rest-assured-examples.git)。此URL应是我们选择克隆存储库的URL。
作业的相应分支名称。我们将添加分支名称为“*/master”,因为我们需要从master分支拉取代码来运行测试。确保在此处添加正确的分支名称。
步骤4 在“Pre-Steps”部分,更新“Root POM”、“Goals”和“Options”。
- Root POM:添加POM.xml文件的路径。通常,它在根文件夹中。因此,值应为默认的“pom.xml”。
- Goals and Options:在此文本框中,我们需要提供运行项目的Maven命令。
由于API测试组织在不同的testng.xml文件中,并且它在项目的test-suite文件夹中可用,我们需要提供以下命令来执行:
|
|
解码Maven命令
- clean install:clean命令告诉Maven清理项目。它将删除target/目录,擦除所有先前构建和编译的工件。
- install命令将编译代码并运行测试。
- -Dsuite-xml=test-suite/restfulbookersuitejenkins.xml “-D”使用“suite-xml”的系统属性,并将值“test-suite/restfulbookersuitejenkins.xml”传递给它。
在POM.xml中,“suite-xml”属性在Maven Surefire插件中定义。
此“suite-xml”的默认值在POM.xml的“Properties”部分设置为“test-suite/testng.xml”。
但是,由于我们有多个testng.xml文件,并且需要从特定的“restfulbookersuitejenkins.xml”运行测试,我们将使用-Dsuite-xml=test-suite/restfulbookersuitejenkins.xml覆盖suite-xml。
以下是restfulbookersuitejenkins.xml的内容:
|
|
此文件包含RESTful Booker演示API的端到端测试。
步骤4 单击“Apply”和“Save”按钮。这将保存作业的配置。
Maven项目的Jenkins作业已成功配置。
运行Jenkins作业
有多种方法可以运行Jenkins作业,如下所述:
- 手动单击“Build Now”按钮。
- 使用Webhooks在开发人员将代码推送到远程存储库后立即运行构建。
让我们通过单击“Build Now”按钮手动运行Jenkins作业。
作业启动后,屏幕左侧会显示进度条。
单击作业编号(如屏幕截图所示),Jenkins将带我们到作业详细信息页面,其中显示作业的详细信息及其进度。
可以通过单击左侧菜单上的“Console Output”链接来验证作业的实时控制台日志。
同样,可以通过在控制台输出页面上向下滚动来查看作业的更详细详细信息。
控制台输出显示总共运行了7个测试用例,所有测试都通过了。最后,它显示构建已成功生成。
这些详细的日志记录允许我们检查作业执行及其进度的分钟细节。
如果Maven项目中的测试失败,可以在这里验证,并相应地采取行动。
验证作业状态
可以在执行完成后检查作业的状态。
它提供了作业运行的历史视图,可以帮助分析测试失败以检查项目的稳定性。
还提供了历史数据的图形表示,显示构建在前三次运行中失败,并在第5次和第6次运行后通过。
作业仪表板
Jenkins为我们提供了作业仪表板,帮助我们了解作业的当前状态。
总结
Jenkins是一个强大的工具,用于设置CI/CD流水线以自动化部署的不同阶段。它提供了多种设置作业的选项,其中之一是使用Maven项目。
我们可以通过安装Maven集成插件并在Jenkins中设置Maven来轻松配置Maven项目的Jenkins作业。作业从SCM拉取代码,并执行用户在作业配置中提供的目标。
Jenkins在仪表板上提供详细的作业执行状态。它在作业的控制台输出上提供更详细的详细信息。历史图表和作业运行详细信息帮助利益相关者验证构建的稳定性并采取进一步行动。