构建

Jenkins Pipeline

1、Pipeline 是一套插件

(1)它支持实现和集成 continuous delivery pipelines 到 Jenkins

(2)Pipeline 提供了一套可扩展的工具,通过 Pipeline domain-specific language(DSL)语法,将简单到复杂的交付 Pipeline 作为代码建模

(3)本质上,Jenkins 是一个自动化引擎,它支持许多自动模式, Pipeline 向 Jenkins 中添加了一组强大的工具,Pipeline 在 Jenkins 上增加了一套强大的自动化工具,支持从简单的持续集成到全面的 CD Pipeline 的使用情况

2、一个 continuous delivery (CD) pipeline 是你将软件从版本控制到用户和客户的过程的一种自动化表达

(1)你的软件的每一个变化(在源码控制中提交)都要经过一个复杂的过程才能被发布

(2)这个过程包括以可靠和可重复的方式构建软件,以及通过多个阶段的测试和部署来推进构建的软件(称为 build)

3、通过对一系列的相关任务进行建模,用户可以利用 Pipeline 的很多特性

(1)Code: Pipeline 是在代码中实现的,通常会检查到源代码控制,使团队有编辑、审查、迭代他们的交付 Pipeline 的能力

(2)Durable:Pipeline 可以从 Jenkins 的主分支的计划内和计划外的重启中存活下来

(3)Pausable:Pipeline 可以有选择的停止或等待人工输入或批准,然后才能继续运行 Pipeline

(4)Versatile:Pipeline 支持复杂的现实世界的 CD 需求,包括 fork/join、循环、并行执行工作的能力

(5)Extensible:Pipeline 插件支持扩展到它的 DSL 的惯例和与其他插件集成的多个选项

4、CD 场景的流程图(示例)

 

Jenkinsfile

1、将一个 Jenkins Pipeline 的定义写进一个文本文件

2、文件又可以被提交到项目的源控制库中,这是“ Pipeline 即代码”的基础,将 CD Pipeline 作为应用程序的一部分,像其他代码一样进行版本管理和审查

3、创建 Jenkinsfile 并提交它到源代码控制中,提供了一些即时的好处

(1)自动地为所有分支创建 Pipeline 构建过程并拉取请求

(2)在 Pipeline 上进行代码复查 / 迭代(与剩余的源代码一起)

(3)对 Pipeline 进行审计跟踪

(4)该 Pipeline 的真正的源代码,可以被项目的多个成员查看和编辑

(5)虽然定义 Pipeline 的语法,无论是在 Web UI 还是在 Jenkinsfile 中都是相同的,通常认为在 Jenkinsfile 中定义并检查源代码控制是最佳做法

4、Jenkinsfile 能使用声明式 / 脚本化语法进行编写

(1)声明式和脚本化的 Pipeline 从根本上是不同的

(2)声明式 Pipeline 的是 Jenkins Pipeline 更近的特性,相比脚本化的 Pipeline 语法,它提供更丰富的语法特性,是为了使编写和读取 Pipeline 代码更容易而设计的

(3)然而,写到 Jenkinsfile 中的许多单独的语法组件(或者 steps),通常都是声明式和脚本化相结合的 Pipeline

 

语法概念

1、pipeline

(1)pipeline 是用户定义的一个 CD 流水线模型

(2)流水线的代码定义了整个的构建过程,通常包括构建、测试、交付应用程序的阶段

(3)pipeline 块是声明式流水线语法的关键部分

2、node

(1)node 是一个机器,它是 Jenkins 环境的一部分,能够执行一个流水线

(2)node 块是脚本化流水线语法的关键部分

3、stage

(1)stage 块定义了通过整个管道执行的一个概念上不同的任务子集(例如:Build、Test、Deploy)

(2)许多插件使用它来可视化或呈现 Jenkins 管道的状态 / 进度

4、step

(1)一个单一的任务

(2)一个 step 告诉 Jenkins 在一个特定的时间点(或进程中的 step)做什么

 

Jenkins 内置构建触发器

1、Build whenever a SNAPSHOT dependency is built

(1)快照依赖构建

(2)当依赖的快照被构建时执行指定 job

2、触发远程构建

(1)例如:使用脚本

(2)远程调用该 job 的 REST API 时,执行该 job

3、Build after other projects are built

(1)job 依赖构建

(2)当依赖的 job 被构建时执行该 job

4、Build periodically

(1)定时构建

(2)使用 cron 表达式定时构建该 job

5、GitHub hook trigger for GITScm polling

(1)向 GitHub 提交代码时触发 Jenkins 自动构建

(2)Github WebHook 触发时构建该 job

6、Poll SCM

(1)定期检查代码变更

(2)使用 cron 表达式定时检查代码变更,变更后构建该 job

(3)定时扫描本地代码仓库的代码,增大系统的开销,不建议使用

 

Email Extension

1、这个插件通过给予更多的控制权,扩展了 Mailer 插件的功能

2、它提供了三个方面的定制

(1)Triggers:选择应该导致发送电子邮件通知的条件

(2)Content:指定每个触发的电子邮件的主题和正文的内容

(3)Recipients:指定谁应该在邮件被触发时收到邮件

posted @   半条咸鱼  阅读(423)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示