Jenkins DSL插件的专注工作配置

组织越来越多地采用Jenkins来自动化其构建和测试过程,使手动管理Jenkins任务变得困难。好消息是,Jenkins DSL插件允许您使用特定于领域的语言(DSL)语法定义Jenkins任务。

Jenkins DSL使得将任务存储在版本控制系统中,与其他用户共享,并从模板生成新任务成为可能。在本教程中,您将学习如何利用Jenkins DSL插件来帮助自动化应用程序开发。

继续阅读,这样您就不必通过Jenkins UI繁琐地创建任务了!

先决条件

本教程将进行实际演示。如果您想跟着做,请确保您具备以下条件。

  • A Linux machine – This guide uses Ubuntu 20.04.
  • Java 11+和已安装在您的Linux 机器上的Jenkins。
  • 集成Jenkins与Git存储库。
  • 管道:作业添加用于在Jenkins中实现和集成持续交付管道的管道套件插件。

安装Jenkins DSL插件

在作业之间保持一致性可能很困难,但Jenkins DSL插件解决了这个问题。怎么做?通过允许您以编程形式定义作业,以人类可读的文件形式。

但在创建作业之前,您首先需要安装Jenkins DLS插件:

1. SSH到您的Jenkins服务器,并运行以下命令来验证您是否已安装所需的Java版本,并且jenkins服务正在运行。

java -version && systemctl status jenkins

如果看到类似于以下输出,则可以安装Jenkins DSL插件。

Checking Java version and Jenkins status

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插件。
Installing the Jenkins DSL plugin

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

Viewing Jenkins DLS Plugin Installation Progress

使用Jenkins DSL插件创建Jenkins Seed Job

现在,您已经安装了Jenkins DSL插件,可以随意创建一个Jenkins Seed Job。编写一个基本的Job DSL脚本,并将脚本整合到Jenkins Seed Job中。创建一个自由风格的作业,向Jenkins控制台打印“Hello World!”消息。

要将一个 Job DSL 脚本合并到 Jenkins 种子任务中:

1. 导航到你的 Jenkins 仪表板,在左侧边栏中点击“新建项目”。浏览器将重定向到一个页面,你可以在这里创建一个新项目(第二步)。

Adding a New Item

2. 接下来,使用以下内容创建一个新项目:

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

3. 对新项目的配置页面上的所有其他部分保持默认设置。

滚动到“构建”部分,点击“添加构建步骤”下拉按钮,选择“处理作业 DSLs”。这样做会打开一个选项,你将在其中提供一个 DSL 脚本(第四步)。

Selecting process job DSLs

4. 现在,选择“使用提供的 DSL 脚本”选项,如下所示,并填充以下代码块到字段中。

这个代码块是一个名为 jenkins-job-demo-1 的自由风格作业定义,它使用 shell 步骤来打印“Hello World”消息。作业的名称是在 Jenkins UI 中显示的内容。

// Sets the API method you want to use (job)
job('jenkins-job-demo-1') { // Sets the name of the job to jenkins-job-demo-1
	// Define what the job does
  steps {
		// Prints a message
    shell('echo Hello World! This job is working!!')
  }
}

创建不同类型的 Jenkins 作业有许多可用的方法,这些方法可以在官方文档中找到。

Providing the DSL Script

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

Saving Configuration

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

Verifying the seed Job

运行种子作业

您已成功创建并验证了种子作业。但是,您如何知道作业是否正常工作?您将针对“使用 Jenkins DSL 插件创建 Jenkins 种子作业”部分的第四步中提供的 DSL 脚本运行种子作业。

1. 在 Jenkins 仪表板上,单击种子作业以导航到其配置页面。

Navigating into the seed Job Page

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

Running the Seed Job

3. 按 F5 刷新页面。您将在“构建历史”部分下看到一个新的构建,底部左侧显示成功状态(绿色勾),如下所示。

此输出表示种子作业成功运行,创建了“生成的项目”部分下的新 Jenkins 作业(jenkins-job-demo-1)。

Viewing the See Job Works and Generated a New Job

4. 现在,转到 Jenkins 仪表板。如下所示,您将看到由种子作业创建的新 Jenkins 作业(jenkins-job-demo-1)。

单击新生成的作业以访问其配置页面。

Verifying See Job’s Generated Job

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

Running the Generated Job (jenkins-job-demo-1)

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

Accessing Console Output of the Generated Job (jenkins-job-demo-1)

如果生成的作业正常运行,您将看到以下消息:Hello World! This job is working!!,如下所示,这是您在作业 DSL 脚本中定义的消息。

到目前为止,您已成功使用作业 DSL 插件创建并运行了一个 Jenkins 作业!

Viewing Console Output

使用 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 脚本字段,并用以下代码替换现有内容。

job('jenkins-job-demo-2') {
    steps {
        shell('echo Hello World!')
    }
}

pipelineJob('github-demo') {
    definition {
        cpsScm {
            scm {
                git {
                    remote {
                        github('jenkinsci/pipeline-examples')
                    }
                }
            }
            scriptPath('declarative-examples/simple-examples/environmentInStage.groovy')
        }
    }
}

添加代码后,单击“保存”以保存更改。

Providing DSL Script for a Pipeline

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

点击新的构建(#2)以访问构建的配置页面。

Rerunning the seed Job

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

这个输出表明新的流水线作业已成功添加。

Verifying the New Pipeline Job was Added Successfully

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

Verifying the New Jenkins Job Exists

6. 最后,点击“立即构建”以运行新的流水线作业。您将看到作业成功运行的信息,在“构建历史”部分下有显示。

点击作业旁边的下拉箭头,并选择“控制台输出”。

Running the New Jenkins Job

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

Viewing Console Output of the Pipeline Job

结论

在本教程中,您已经学会了如何使用 Job DSL 插件创建 Jenkins 作业。您已经了解了通过使用 Jenkins Pipeline 插件创建 CI/CD 流水线来增强应用程序开发。

Job DSL插件和Jenkins Pipeline插件一起工作,提供了一种强大的方式来管理Jenkins任务和构建流水线。为什么不配置这些插件来创建自动触发Jenkins任务的复杂构建流水线呢?

Source:
https://adamtheautomator.com/jenkins-dsl/