天天看点

自动化集成:Pipeline流水语法详解

自动化集成:Pipeline流水语法详解

该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译、打包、镜像构建、部署等操作;本篇文章主要描述Pipeline流水线用法。

前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译、打包、镜像构建、部署等操作;本篇文章主要描述Pipeline流水线用法。
自动化集成:Pipeline流水语法详解

Pipeline流水线任务通常情况下都是自动触发的,在Git仓库中配置源码改动后通知的地址即可。

例如在Gitee仓库中,基于WebHook的配置,可以在向仓库push代码后,自动回调预先设定的请求地址,从而触发代码更新后的打包动作,基本流程如下:

自动化集成:Pipeline流水语法详解

这里涉及到两个核心配置:

Gitee回调:即仓库接收到push请求后的通知地址;在仓库管理的<code>WebHooks</code>选项中;

Jenkins流程:编写流水线任务,处理代码提交后的自动化流程;这里需要Jenkins地址可以在外网访问,网上的组件很多,自行选择搭建即可;

注意:可以先随意设置回调地址,在请求日志中直接拷贝请求参数,在postman中去触发Jenkins任务,这样在测试时会方便很多。

自动化集成:Pipeline流水语法详解

这里结合Gitee的帮助文档,去分析不同push动作的参数标识,可以判断分支的创建、推送、删除等操作,例如:

创建分支:before字符都是0;删除分支:after字符都是0;

在Jenkins插件管理中,安装<code>Generic-Webhook-Trigger</code>插件,流水线<code>pipeline</code>相关组件在Jenkins初始化的时候已经安装了。

新建Item,输入任务名称,选择<code>pipeline</code>选项即可:

自动化集成:Pipeline流水语法详解

选择Webhook选项,页面提示了触发的方式。

基于如上方式通过认证,触发流水线执行,会生成任务日志,即流程是通顺的。

triggers:基于hook模式触发流水线任务;

environment:声明全局通用的环境变量;

stages:定义任务步骤,即流程分段处理;

post.always:最终执行的动作;

常规流程中的整体结构如下:

把各个节点下的脚本配置进去,就会生成一个自动化的流水线任务。注意这里不勾选<code>使用Groovy沙盒</code>选项。

这里说的参数解析是指,Gitee通过hook机制请求Jenkins服务携带的参数,这里主要解析post参数即可,解析方式看说明:

自动化集成:Pipeline流水语法详解

这里从hook回调的参数中选了几个流程中使用的参数,下面看具体解析方式,在上图中点击新增:

自动化集成:Pipeline流水语法详解

把上述参数依次做好配置即可,这样在工作流中就可以使用这些参数。

这里即<code>triggers</code>模块配置,核心作用是加载触发流程的一些参数,后续在脚本中使用,其他相关配置按需选择即可,注意这里的参数需要在上个步骤中配置:

声明一些全局的环境变量,也可以直接定义,在流程中用<code>${变量}</code>的方式引用:

这里根据hook请求参数,解析出分支的操作类型:是否创建、是否删除、是否主干分支,以及定义一个<code>is_success</code>流程是否成功的标识。

这里主要分为五个步骤:解析数据、拉取分支、处理Pom文件、分支推送、项目打包;

解析数据:解析并输出部分参数信息;

拉取分支:结合Git命令,拉取分支代码;

处理Pom文件:对pom文件的读取和修改;

分支推送:结合Git命令,推送分支代码;

项目打包:结合Mvn命令,完成项目打包;

注意:这里在本地测试流程时,并没有推送代码;在项目打包完成后,结合shell脚本完成服务的启动发布。

在流程的最后,识别任务的执行标识<code>is_success</code>,通知相关人员是否打包成功,这里的通知方式可以选择邮件或者其他API推送的通知类型,不过多描述:

完成上面<code>pipeline</code>流水线脚本开发后,通过postman工具不断发送请求,完成脚本调试:

自动化集成:Pipeline流水语法详解

这里也可以点击流程里的不同模块,查看该模块下的日志信息:

自动化集成:Pipeline流水语法详解

说明:完整的<code>pipeline</code>脚本内容放在末尾的Gitee开源仓库中,有需要的自行获取。

同系列推荐:

Jenkins管理工具详解

分布式服务部署发布

微服务灰度发布原理

服务自动化部署和管理

微服务组件二次浅封装

自动化集成:Pipeline流水语法详解

继续阅读