Jenkins 流水线教程:如何创建 Jenkins文件(示例)

⚡ 智能摘要

Jenkins 流水线将构建、测试和部署作业串联成一个有序的序列,并以代码的形式运行。 Jenkins与项目一起提交的文件将该序列转换为可审查的、版本化的交付定义。

  • 🔘 管道: 一组相互关联的事件,其中每个任务都依赖于前一个任务。
  • ☑️ Jenkins文件: 一个用领域特定语言编写的文本文件,其中包含每个流水线步骤。
  • ✅ 两种语法: 声明式编程提供固定的层级结构;脚本式编程则提供结构化的交易方式。 Groovy 控制。
  • 🧪 四个术语: Pipeline、Node、Stage 和 Step 分别代表流程、机器、阶段和任务。
  • 🛠️ 安装路径: 安装构建管道插件,添加管道视图,链接作业,运行它。
  • 📌 做法: 将材料工作放在节点块中,将非设置工作放在阶段中,并将输入包装在超时中。

Jenkins 管道定义为代码 Jenkins文件

什么是 Jenkins 管道?

Jenkins Pipeline 是一系列插件的组合,支持集成和实施 持续交付管道它是一款可扩展的自动化服务器,可通过管道领域特定语言 (Pipeline DSL) 以代码形式创建简单和复杂的交付管道。管道是一组按顺序相互连接的事件。

什么是持续交付管道?它是如何工作的?

在一个 Jenkins 管道中,每个作业或事件都对至少一个或多个事件有某种依赖关系,如下图所示。

持续交付管道状态包括构建、部署、测试和发布。 Jenkins
工作的 Jenkins 持续交付管道

上图展示了一个持续交付管道。 Jenkins它由构建、部署、测试和发布四个状态组成。每个状态都有自己的事件,这些事件按顺序执行。

持续交付流水线能够自动实现这一过程,通过一系列可重复的构建步骤,将软件从版本控制阶段推进到最终发布阶段。 测试 以及部署阶段。

什么是 Jenkins文件?

Jenkins 管道可以在一个名为“管道”的文本文件中定义。 Jenkins文件。它以领域特定语言 (DSL) 的代码形式表达管道,并包含运行管道所需的每个步骤。

使用的好处 Jenkins文件为:

  • 一个 Jenkins文件可以为每个分支创建管道并执行拉取请求。
  • 您可以查看您的 Jenkins 管道上的代码
  • 您可以审核您的 Jenkins 管道
  • 这是您的管道的唯一来源,可以由多个用户修改。

管道可以在以下位置定义: Jenkins 网页用户界面或 Jenkins文件已提交到源代码控制系统。一个最小的声明式文件具有固定的结构——一个管道块、一个代理和若干阶段,每个阶段包含一个步骤。

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying'
            }
        }
    }
}

将其保存到存储库根目录会使用代码更新管道版本。

声明式管道语法与脚本式管道语法

有两种类型 Jenkins 用于定义管道语法的管道语法 Jenkins文件。

  1. 陈述式
  2. 脚本化

陈述式

声明式管道语法更简便。它遵循预定义的层次结构,并能以直接的方式控制管道执行的各个方面。

脚本化

脚本化 Jenkins 管道运行在 Jenkins 通过轻量级执行器进行控制器操作,该执行器使用极少的资源将管道转换为原子命令。两者的编写方式截然不同,因此请根据实际情况选择其中一种。 Jenkins文件。

⚠️ 注意: Jenkins 现在称之为 主 这个 调节器.

为何使用 Jenkins 管道?

Jenkins 是开放的 持续集成服务器 实现自动化 软件开发过程您可以创建多个 自动化工作 根据您的用例,将它们作为一个流水线运行。

以下是您应该使用的原因 Jenkins 管道:

  • Pipeline 是以代码形式实现的,因此多个用户可以编辑和执行该流程。
  • 流水线具有很强的鲁棒性:如果服务器意外重启,流水线会自动恢复运行。
  • 您可以暂停管道,并使其保持运行状态,直到用户提供输入。
  • 流水线支持大型项目:运行多个作业,甚至可以循环使用流水线。

Jenkins 产品管线 Concepts

四个术语在每个中反复出现 Jenkins文件:

术语描述
产品管线一套以代码形式编写的指令集,涵盖了持续交付的整个构建过程。借助流水线,您可以构建、测试和交付应用程序。
Node机器 Jenkins 运行操作被称为节点。节点块主要用于脚本化管道语法。
阶段阶段模块包含一系列步骤。构建、测试和部署流程都在一个阶段中汇合,这也是流水线视图所呈现的内容。
步骤单个任务在预定时间执行特定流程。管道是一系列步骤的集合。

安装构建管道插件 Jenkins

构建管道插件创建传入和传出作业的管道视图,并添加手动干预触发器。

请按以下步骤安装:

步骤1) 插件的设置可以在以下位置找到: 物业管理 Jenkins 管理插件,如下所示。

⚠️ 版本说明: 当前 Jenkins 发布标签此屏幕 物业管理 Jenkins → 插件; 标签页的行为如本文所述。

在“管理插件”页面中 Jenkins 构建管道插件设置的位置

如果您已经安装了该插件,它将显示在已安装选项卡下。

已安装选项卡 Jenkins 插件管理器列出了构建管道插件

步骤2) 如果插件尚未安装,则会在“可用”选项卡下显示。

插件安装完成后:

如何创建 Jenkins 产品管线

登录到 Jenkins XNUMX月XNUMX日:

步骤1) 点击左侧的“+”按钮 Jenkins 用于创建流程的仪表板。

加号按钮 Jenkins 用于添加新视图的仪表板

步骤2) 填写新的视图对话框:

  1. 给管道视图起个名字。我们称之为“Guru本次演示使用“99 Pipeline”。
  2. 在“选项”下选择“构建管道视图”。
  3. 点击确定,如下图所示。

在新视图对话框中输入管道视图名称,并选中“构建管道视图”。

步骤3) 下一页会要求您提供更多配置详情。请接受默认设置,并确保在设置中选择第一个作业。

点击“应用”,然后点击“确定”。

使用默认设置并选中第一个作业来构建管道视图配置页面。

然后会显示您项目的示例管道视图:

样本 Jenkins 为构建管道视图创建 Guru99 管道项目

运行管道构建

步骤1) 首先将作业串联起来:打开第一个作业并点击配置。

在第一个上配置链接 Jenkins 用于开始连锁工作的任务

步骤2) 现在,在“构建触发器”下,选中“在其他项目构建完成后构建”选项。

在“构建触发器”部分中,选中“在其他项目构建完成后构建”选项。

现在,你所有的工作都可以通过一个链条来安排了。

步骤3) 如果尚未安装,请安装构建管道视图插件。

步骤4) 点击 Jenkins 在仪表板中,使用“+”按钮创建视图,选择“构建管道视图”选项,然后单击“确定”。

新建视图对话框,并选中“构建管道视图”选项

步骤5) 在管道视图配置下,找到管道流。

在“流水线流程”下,选择要运行的初始作业——在步骤 1 和步骤 2 中与其他作业链接的作业。

管道流量设置 Guru99 项目 1 被选为初始工作

Guru这里选择 99 项目 1 作为初始作业,因此链式作业会逐个运行。

管道运行时,红色和绿色符号会显示其状态:红色表示失败,绿色表示成功。

在这个例子中,按钮是绿色的,所以管道操作成功了。

绿色状态按钮显示成功 Jenkins 管道运行

运行 Jenkins 管道

点击“运行”按钮运行程序。 Jenkins 管道。它看起来大概是这样的:

运行按钮 Jenkins 构建管道视图

上面的例子构建了一个简单的“helloworld.java”程序。实际项目涉及的流程要复杂得多,如下图所示。

完成 Jenkins 构建管道视图,按顺序显示每个链式作业

⚠️ 版本说明: 构建管道视图插件是可视化链式自由式作业的传统方法;当前的做法是在 A 中定义相同的流程。 Jenkins文件。蓝色 Ocean 不再增强。

使用最佳实践 Jenkins 产品管线

七个习惯让管道保持畅通:

  • 使用正品 Jenkins 产品管线
  • 以代码形式开发您的管道
  • 管道中的任何非设置工作都应在阶段块内进行。
  • 管道中的任何实质工作都必须在节点块内执行。
  • 不要在节点块内使用输入。
  • 切勿使用 env 全局变量设置环境变量
  • 将输入包装在超时中

常见问题

它扫描存储库,找到所有包含以下内容的分支: Jenkins文件并为每个文件创建一个作业。分支行为由该文件中的 BRANCH_NAME 变量决定。

将它们存放在 Jenkins 凭据通过环境变量块中的 `credentials()` 辅助函数进行存储和读取。该值在运行时注入,并在日志中进行屏蔽,因此文件中不会保留任何密码。

无论结果如何,它都会在阶段结束后运行。诸如“始终”、“成功”、“失败”和“不稳定”之类的条件允许一个文件发布报告、归档工件并通知团队,而无需重复操作。

是的。阶段内的并行代码块会同时运行其所有分支,这很适合跨浏览器运行的程序套件。每个分支都需要一个执行器,因此只有当执行器空闲时,运行时间才会缩短。

将其发布到声明式代码检查器端点,或者打开之前的运行回放,编辑脚本并执行,而无需修改代码仓库。这两种方法都能及早发现语法错误。

AI助手可以读取冗长的控制台日志,并将重复堆栈信息分组。 trac记录并命名故障开始发生的阶段。它还会标记间歇性测试。请对照原始日志确认每一条建议。

是的。 副驾驶 根据命名阶段的注释草拟声明式框架,并完成诸如检出和 shell 命令之类的步骤。 Rev查看代理标签、凭据和超时时间,建议经常会猜错这些信息。

当同一个方块出现三次或三次以上时 Jenkins文件。共享库将所有逻辑保存在一个版本化的存储库中,因此修复程序会同步到每个项目,而每个文件只保留其自身的版本。

总结一下这篇文章: