如何使用 Jenkins 的脚本化流水线(Pipeline)

您所在的位置:网站首页 jenkins分布式流水线AB双切代码上线 如何使用 Jenkins 的脚本化流水线(Pipeline)

如何使用 Jenkins 的脚本化流水线(Pipeline)

#如何使用 Jenkins 的脚本化流水线(Pipeline)| 来源: 网络整理| 查看: 265

在这篇简单的教程中,你将会学习到 Jenkins 的流水线即代码,以及如何开发流水线脚本的指导。

Jenkins 是一个开源持续集成服务器,它可以提供持续执行自动化构建和测试的能力。Jenkins 可以控制和监控多种任务,包括:拉取代码、静态代码分析、构建工程、执行单元测试、自动化或者性能测试,最后部署应用。这些任务通常是一个持续部署流水线。

流水线(Pipeline)是 Jenkins 的一套插件。流水线可以认为是执行任务的一系列阶段,它可以持续地发布你的应用。“持续”的概念是相对于你的应用环境来说的:在某些情况下,持续发布可以是每天也可以是每周,这取决于你的业务需要。在特定场景中,例如严重 bug 的修复,就需要在环境准备好后尽快地发布程序。流水线提供了自动化这些过程的方法。

在 Jenkins 中,流水线使用 DSL 来定义语句和表达式,和 Groovy 的语法结构相同。这使得流水线对于了解 Groovy 的人来说很简单。

从 Jenkins 的2.0版本开始,流水线功能变得开箱即用,不需要特殊的配置。另外一个改进的地方是,流水线可以被当作代码,使你开发出来的脚本可以利用版本管理工具控制它。

利用流水线脚本,可以把刚开发出来的特定功能代码发布后测试。这是为了不引入新的 bug,保证程序可以像之前一样正确执行。因此,你可以开发流水线脚本来执行指定流程的自动化测试,对特定场景利用 Apache JMeter™ 执行性能测试。

本文,我们会讨论脚本化流水线(流水线即代码)的细节,并解释它的结构,提供一些使用示例。更多有关在 Jenkins 中使用 JMeter 的信息,可以在持续集成入门的博文中找到:如何在 Jenkin 中运行 JMeter。同时,文章还介绍了如何利用 Jenkins2.0 的流水线来运行 JMeter 测试,并在 Github 中提供了例子。

随着流水线的引入,Jenkins 提供了一个嵌入式的 Groovy 引擎,使得 Groovy 成为了流水线的 DSL 脚本语言。

这里是设置 Jenkins 流水线的步骤。

1、首先,登陆到你的 Jenkins 服务器,并从左侧面板选择“New Item”:

2、下一步,输入名称并选择“Pipeline“类型。点击”OK“后进入下一步:

3、你可以开始写流水线脚本了:

你可以在中间红色框里写脚本,这也是下面要解释的。

流水线用特殊的语句或者元素定义章节,这遵循 Groovy 语法。

节点块 首先定义的块是“node:”

“node”是 Jenkins 分布式架构的一部分,它可以把负载分布到多个“agent”节点。“maerer”节点处理所有的环境。Jenkins 代理节点从 master 节点上取得构建任务,然后根据 node 块指定的节点上执行所有任务。更多信息可以在 Jenkins 分布式构建中找到。

这个块不是必须但是建议使用,而且是一个好的实践。如果代码中包含这个的话,Jenkins 会进行调度,当有任何节点是可用状态时运行所有的步骤,并且创建指定的工作目录。

阶段块 下一个需要的是“stage:”

你的流水线中的多个步骤可以组合为阶段。在这些阶段中可能包括:

拉取代码构建工程部署应用执行功能测试执行性能测试 上面的每个阶段都可以包括多个动作。例如:应用部署的阶段可以包括:为了功能测试而拷贝文件到指定目录,在特定的服务器上执行性能测试;一旦文件包括成功,就执行部署动作。

每个阶段块指定要执行的任务。例如:一个全部脚本化的流水线可能是:

该脚本包含如下阶段:

构建阶段: Selenium 测试阶段: dir(automation_path):改变当前目录为变量 automation_path。 bat “man clean test … “: 触发 maven 来执行套件“冒烟测试”,并使用预定义的变量“QA”。同时,“clean”表示会清理构建。 阶段块也是可选的,但是推荐使用的,因为它是一种组织任务的方式。

Jenkins 提供了把预定义动作生成为流水线语句的接口,这可以添加到任意脚本阶段中。在流水线页面,点击“流水线语法”就会进入下面的页面:

例如:根据如下选择可以创建执行 windows 批处理文件的命令:

点击“生成流水线脚本”就会生成需要的语句,然后就可以添加到脚本中。

流水线即代码的想法,是基于流水线脚本可以被当作代码一样放到代码仓库中,进行版本化控制。包含你流水线代码的文本文件叫做 Jenkinsfile。

把你的流水线写入到 Jenkinsfile 中,并让它作为你的应用代码库的一部分有很多好处:它可以被团队其他成员审查、编辑,该文件可以版本化和程序一起构建。

你的 Jenkinsfile 可以通过 Jenkins 的 web 界面或者你的文本编辑器进行编辑,并且你还可以使用你喜欢的 IDE 编辑,因此可以成为你的工程的一部分。而且,你可以配置 Jenkins 自动轮询你的库,当检测到有更新时触发新的构建。在工程配置页面的“构建触发器”区域可以完成该配置:

启用“Poll SCM”,允许你在计划文本框中输入类似 cron 的表达式。配置 Jenkins 轮询你的代码库不是一个轻量级、高效获取更新的方式。而 Git Hooks 是一个比较好的方式。在文章自定义 Git——Git Hooks 提供了如何配置的内容。

Jenkins 通过提供沙盒来限制执行任意 Groovy 脚本。在流水线选项卡中,选项“使用 Groovy 沙盒”显示在下面,它允许用户在没有管理员权限的情况下运行。这种情况下,脚本只能使用内部可访问的 API(这一点允许你使用 Groovy来开发自己的脚本)。

当取消勾选,如果脚本中的操作需要批准,则管理员就必须授予权限。这也就是“脚本授权”。默认情况下,所有的 Jenkins 流水线都运行在 Groovy 沙盒中。如果勾选该选项,并且用到了未授权的操作,就会在运行时发生错误。白名单和黑名单都可以在脚本安全列表中找到。请参考本文中的脚本授权获取更多信息。

流水线最新改进的地方是申明式流水线,这和我们讨论过的脚本式流水线有些不同。它们都是流水线即代码的实现,但申明式的流水线提供了更容易理解的语法并且容易开发和维护。这两个增强都是增加了语法元素,允许你定义不同的流水线结构。

基本上,脚本式流水线的结构如下:

另一方面,申明式的流水线可以采用更多的元素,如下所示:

脚本元素“pipeline”、“agent”和”steps“都是申明式流水线特有的语法;”stage“对于两种类型都可用;而”node“只能用在脚本式流水线中。

”Pipeline“ 定义的块包含了所有的脚本内容。”Agent“ 定义了流水线要在哪里运行,这和脚本式流水线中的”node“类似。”Stages“ 包含所有阶段。 在这篇博客中,我们已经大概过了一次 Jenkins 的流水线即代码。我们还有如何开发流水线脚本的高级内容的教程。而完整的文档则需要查看 Jenkins 官方文档。 在我们的 Continuous Testing Academy 中可以学习到你用于测试的 Jenkins 所有知识。

你也可以把 BlazeMeter 集成到你的 Jenkins 流水线中。尝试把示例应用在BlazeMeter 中做性能测试,或者把你的url放入下面的文本框中,你的测试将会在几分钟内开始运行。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3