jenkins pipeline

Jenkins Pipeline的基础语法

支持两种语法
Declarative 声明式(在Pipeline plugin 2.5中引入)
Scripted Pipeline 脚本式
声明式语法的特点
1.最外层必须由pipline{ //do something }来进行包裹
2.不需要分号作为分隔符,每个语句必须在一行内
3.不能直接使用groovy语句(例如循环判断等),需要被script {}包裹

1.参数详解
agent:该部分指定整个Pipeline或特定阶段将在Jenkins环境中执行的位置,具体取决于该agent 部分的放置位置。该部分必须在pipeline块内的顶层定义 ,也可以使用在stage级。
stage:表示这个Pipeline的某一个执行阶段(使用stage使得逻辑变得更加简单明了)
steps: 包含一个或者多个在stage块中执行的step序列(在这里执行操作:运行maven或者部署等等)
environment:指定键值对,可用于step中,主要是为常量或者变量赋值,根据所在的位置来决定其作用范围(类似于java中全局和局部的概念)
options:允许执行pipeline内置的专用选项,也可以使用由插件提供的
parameters:提供触发pipeline时的参数列表
trigger:定义了触发pipeline的方式(jenkins1.x中的pollscm定时构建)
tools:自动安装工具,注意这里使用的一定是在jenkins全局配置中已经定义好了的
when:可以用来执行一些代码逻辑
post:可以根据pipeline的状态来执行一些操作

agent的一些参数如下:
any : 在任何可用的机器上执行pipeline
none : 当在pipeline顶层使用none时,每个stage需要指定相应的agent
agent{ label ‘slave1’ }

post钩子

post 步骤在Jenkins pipeline语法中是可选的,包含的是整个pipeline或阶段完成后一些附加的步骤。 比如我们希望整个pipeline执行完成之后或pipeline的某个stage执行成功后发送一封邮件,就可以使用post,可以理解为"钩子"。

根据pipeline或阶段的完成状态,post部分分成多种条件块,包括:
• always:不论当前完成状态是什么,都执行。
• changed:只要当前完成状态与上一次完成状态不同就执行。
• fixed:上一次完成状态为失败或不稳定(unstable),当前完成状态为成功时执行。
• regression:上一次完成状态为成功,当前完成状态为失败、不稳定或中止(aborted)时执行。
• aborted:当前执行结果是中止状态时(一般为人为中止)执行。
• failure:当前完成状态为失败时执行。
• success:当前完成状态为成功时执行。
• unstable:当前完成状态为不稳定时执行。
• cleanup:清理条件块。不论当前完成状态是什么,在其他所有条件块执行完成后都执行。post部分可以同时包含多种条件块。

when

该when指令允许Pipeline根据给定的条件确定是否执行该阶段。该when指令必须至少包含一个条件。如果when指令包含多个条件,则所有子条件必须为舞台执行返回true。这与子条件嵌套在一个allOf条件中相同(见下面的例子)。

更复杂的条件结构可使用嵌套条件建:not,allOf或anyOf。嵌套条件可以嵌套到任意深度。When{…}是写在stage{…}里面一层条件控制,下面来看看when{…}支持的一些内置条件命令。

branch
当正在构建的分支与给出的分支模式匹配时执行阶段,例如:when { branch ‘master’ }。请注意,这仅适用于多分支Pipeline。

environment
当指定的环境变量设置为给定值时执行阶段,例如: when { environment name: ‘DEPLOY_TO’, value: ‘production’ }

expression
当指定的Groovy表达式求值为true时执行阶段,例如: when { expression { return params.DEBUG_BUILD } }

not
当嵌套条件为false时执行阶段。必须包含一个条件。例如:when { not { branch ‘master’ } }

allOf
当所有嵌套条件都为真时,执行舞台。必须至少包含一个条件。例如:when { allOf { branch ‘master’; environment name: ‘DEPLOY_TO’, value: ‘production’ } }

anyOf
当至少一个嵌套条件为真时执行舞台。必须至少包含一个条件。例如:when { anyOf { branch ‘master’; branch ‘staging’ } }
举例一个 使用expression条件的when的代码示例。

版本参数化构建

jenkins参数化构建
可以用git的分支、标签、修订/commit的版本来进行使用
这里我用的是标签的概念,也让我们再了解git的标签概念
说明"标签就是tag,是开发人员提交代码之前,可以给将要提交的代码打一个tag,比如v1.0,这样容易分辨代码的历史版本"

也就是说,Jenkins可以识别到仓库里面的分支,历史版本commit、和标签;

可以选择任何分支、任何历史版本、任何标签进行构建;所以,一旦新发布的代码有问题,我们还可以利用Jenkins重新构建一次没有问题的代码,确保应用使用正常;感受到jenkins的强大了嘛!!!
标签式参数
标签/tag、每次提交代码的时候,可以打个tag,类似于版本号;这样可以明确历史版本。

首先用1台机器作为git客户端,拉取代码,修改代码,打tag,上传至远程仓库,这里远程仓库我用的仍是gitee。

这里git客户端机器,可以用新的,我这里仍然使用的jenkins服务器,各位应该都能看懂;
commit/修订式参数

所以,Jenkins是可以直接进行版本的切换构建,发布的,只不过我们这里没有设置后续的动作;各位要理解到位;
分支式参数

Jenkins pipeline流水线过程:

Jenkins pipeline 是一种可编排、可扩展和可控制的持续交付环境,由一系列流水线阶段组成,可以自动化地执行各种任务,包括构建、测试、部署等操作。Jenkins pipeline 流水线通常包含以下几个阶段:
Checkout:从代码仓库拉取最新的代码。
Build:编译代码和生成可执行文件或包。
Test:运行单元测试、集成测试和验收测试等,检查代码是否符合质量标准和规范。
Analyze:使用代码质量工具(例如 SonarQube)检查代码的质量和可读性等。
Package:打包可执行文件或应用程序,并将其上传到一个存储桶或服务器。
Deploy:将应用程序部署到测试或生产环境中,可能需要进行自动化审批和验证。
Notify:通知关键人员和团队成员关于构建、测试和部署的结果,并提供错误报告和日志等详细信息。
Jenkins pipeline 流水线可以在 Jenkins 脚本或 Jenkinsfile 中定义,这允许流水线的逻辑、操作和输出得到更好的控制。用户可以使用各种插件和扩展,例如 Pipeline 配置、Git 集成、Docker 集成、各种测试和部署工具,以及定制的自定义插件,来构建和扩展他们的流水线。

总的来说,Jenkins pipeline 流水线可以让用户在持续交付过程中实现更高的可控性、可靠性和自动化程度,帮助团队更快地交付更高质量和更安全的应用程序。

实战项目Pipeline+Maven+Ansible+Tomcat
Pipeline+Maven+Ansible+Tomcat构建项目是一种常用的构建流程,可以在持续集成和持续交付的时候使用。下面是一个简单的示例,详细介绍了如何使用这些工具来构建Web应用程序:
创建Maven项目:创建一个Maven项目,按照惯例将src目录下的文件分为main和test,使用Maven构建和打包应用程序。
创建Jenkins流水线:通过Jenkins创建一个流水线项目。可以在Jenkins脚本编辑器中编写构建脚本或在源码管理系统中创建文本文件中输入与Jenkins Pipeline语法一致的脚本。
配置Jenkins流水线:添加流水线的参数,可以在Notebook页面上进行修改。
安装部署Tomcat:将Tomcat服务器安装在目标服务器上。
编写Ansible剧本:使用Ansible管理工具编写一个用于部署Tomcat的剧本。剧本中包含了下载和解压缩Tomcat的步骤。
执行Jenkins流水线:将Jenkins流水线定期执行,它将自动拉动代码,使用Maven构建应用程序,使用Ansible部署应用程序并自动化运行自动化测试。

最后,可以通过浏览器访问服务端地址打开web页面。完成构建和部署过程后,您就可以在浏览器中看到Web应用程序的主页。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值