组织越来越多地采用Jenkins来自动化其构建和测试过程,使手动管理Jenkins任务变得困难。好消息是,Jenkins DSL插件允许您使用特定于领域的语言(DSL)语法定义Jenkins任务。
Jenkins DSL使得将任务存储在版本控制系统中,与其他用户共享,并从模板生成新任务成为可能。在本教程中,您将学习如何利用Jenkins DSL插件来帮助自动化应用程序开发。
继续阅读,这样您就不必通过Jenkins UI繁琐地创建任务了!
先决条件
本教程将进行实际演示。如果您想跟着做,请确保您具备以下条件。
- A Linux machine – This guide uses Ubuntu 20.04.
- 集成Jenkins与Git存储库。
- 管道:Groovy能够直接执行Groovy代码。
安装Jenkins DSL插件
在作业之间保持一致性可能很困难,但Jenkins DSL插件解决了这个问题。怎么做?通过允许您以编程形式定义作业,以人类可读的文件形式。
但在创建作业之前,您首先需要安装Jenkins DLS插件:
1. SSH到您的Jenkins服务器,并运行以下命令来验证您是否已安装所需的Java版本,并且jenkins服务正在运行。
如果看到类似于以下输出,则可以安装Jenkins DSL插件。

2. 接下来,打开您喜欢的网络浏览器,导航至http://your_server_ip:8080/pluginManager/available。将your_server_ip:8080替换为您Jenkins服务器的实际IP地址和端口号。
3. 最后,使用以下命令安装Jenkins DSL插件:
- 如下图所示,在右上角的搜索框中键入“Job DSL”
如果您已经安装了Job DSL插件并从旧版本升级,请注意在搜索Job DSL时,Job DSL脚本将不会出现在列表中。您可以导航至http://your_server_ip:8080/pluginManager/installed检查Job DSL插件是否存在。
- 勾选Job DSL选项旁边的复选框。
- 在底部点击“无需重启安装”以安装Jenkins Job DSL插件。

Jenkins界面将显示安装插件的进度条。安装完成后,您将看到类似下方的成功消息。

使用Jenkins DSL插件创建Jenkins Seed Job
现在,您已经安装了Jenkins DSL插件,可以随意创建一个Jenkins Seed Job。编写一个基本的Job DSL脚本,并将脚本整合到Jenkins Seed Job中。创建一个自由风格的作业,向Jenkins控制台打印“Hello World!”消息。
要将一个 Job DSL 脚本合并到 Jenkins 种子任务中:
1. 导航到你的 Jenkins 仪表板,在左侧边栏中点击“新建项目”。浏览器将重定向到一个页面,你可以在这里创建一个新项目(第二步)。

2. 接下来,使用以下内容创建一个新项目:
- 输入一个项目名称,如下所示。但在本教程中,将项目名称设置为seed。
- 从下面的选项中选择自由风格项目(一个可重复的构建任务、脚本或管道)。
- 在底部点击“确定”创建新项目,你的浏览器将重定向到新项目的配置页面。

3. 对新项目的配置页面上的所有其他部分保持默认设置。
滚动到“构建”部分,点击“添加构建步骤”下拉按钮,选择“处理作业 DSLs”。这样做会打开一个选项,你将在其中提供一个 DSL 脚本(第四步)。

4. 现在,选择“使用提供的 DSL 脚本”选项,如下所示,并填充以下代码块到字段中。
这个代码块是一个名为 jenkins-job-demo-1 的自由风格作业定义,它使用 shell 步骤来打印“Hello World”消息。作业的名称是在 Jenkins UI 中显示的内容。
创建不同类型的 Jenkins 作业有许多可用的方法,这些方法可以在官方文档中找到。

5. 在页面底部单击保存,以保存新项目(种子)的配置。

6. 最后,转到 Jenkins 仪表板,验证您创建的种子作业是否存在,如下所示。

运行种子作业
您已成功创建并验证了种子作业。但是,您如何知道作业是否正常工作?您将针对“使用 Jenkins DSL 插件创建 Jenkins 种子作业”部分的第四步中提供的 DSL 脚本运行种子作业。
1. 在 Jenkins 仪表板上,单击种子作业以导航到其配置页面。

2. 接下来,在左侧边栏单击立即构建以运行该作业。

3. 按 F5 刷新页面。您将在“构建历史”部分下看到一个新的构建,底部左侧显示成功状态(绿色勾),如下所示。
此输出表示种子作业成功运行,创建了“生成的项目”部分下的新 Jenkins 作业(jenkins-job-demo-1)。

4. 现在,转到 Jenkins 仪表板。如下所示,您将看到由种子作业创建的新 Jenkins 作业(jenkins-job-demo-1)。
单击新生成的作业以访问其配置页面。

5. 单击立即构建以运行生成的作业(jenkins-job-demo-1)。

6. 最后,在“构建历史”部分下方的成功构建旁边,点击向下箭头按钮,如下所示。从上下文菜单中选择“控制台输出”以查看作业的输出。

如果生成的作业正常运行,您将看到以下消息:Hello World! This job is working!!,如下所示,这是您在作业 DSL 脚本中定义的消息。
到目前为止,您已成功使用作业 DSL 插件创建并运行了一个 Jenkins 作业!

使用 Jenkins DSL 插件为 CI/CD 流水线创建作业
到目前为止,您已经学会了如何使用作业 DSL 插件创建并运行 Jenkins 自由风格作业。您将通过为 CI/CD 流水线创建 Jenkins 作业来自动化软件开发过程中的非人工部分。
具体来说,您将创建一个从 GitHub 存储库中拉取代码、构建代码并运行单元测试的作业。
要为 CI/CD 流水线创建 Jenkins 作业:
1. 在您的网络浏览器中导航至 http://your_server_ip:8080/job/seed/configure 以配置您的种子作业。将 your_server_ip 替换为您的 Jenkins 服务器 IP 地址,并将 seed 替换为您的作业名称。
2. 接下来,滚动到“构建”部分,找到 DSL 脚本字段,并用以下代码替换现有内容。
添加代码后,单击“保存”以保存更改。

3. 在下一个屏幕的左侧边栏中点击“立即构建”,如下所示。在“构建历史”部分(左下角),您会看到种子作业成功运行的信息。
点击新的构建(#2)以访问构建的配置页面。

4. 现在,导航到新构建的“控制台输出”。您将看到一个“添加项目”消息和新作业的名称,如下所示。
这个输出表明新的流水线作业已成功添加。

5. 返回到 Jenkins 仪表板,您会看到新的流水线作业已添加(jenkins-job-demo-2)到作业列表中。点击该新的流水线作业以访问作业的配置页面。

6. 最后,点击“立即构建”以运行新的流水线作业。您将看到作业成功运行的信息,在“构建历史”部分下有显示。
点击作业旁边的下拉箭头,并选择“控制台输出”。

在下面的“控制台输出”中,您可以看到作业的输出,即 Jenkins 成功克隆了存储库,构建了代码并运行了单元测试。

结论
在本教程中,您已经学会了如何使用 Job DSL 插件创建 Jenkins 作业。您已经了解了通过使用 Jenkins Pipeline 插件创建 CI/CD 流水线来增强应用程序开发。
Job DSL插件和Jenkins Pipeline插件一起工作,提供了一种强大的方式来管理Jenkins任务和构建流水线。为什么不配置这些插件来创建自动触发Jenkins任务的复杂构建流水线呢?