1. Jenkins 是什么
Jenkins 是一款由 Java 编写的开源的持续集成工具。
注:目前一些自动化编译,自动化测试都允许在 Jenkins 上运行。
2. 流水线
2.1 流水线是什么
Jenkins 2.0 的到来, Pipeline(流水线)进入了视野, jenkins 2.0 的核心特性,也是最适合持续交付的 feature。
注:简单的来说,就是把 Jenkins 1.0 版本中,Project 中的相关配置信息,如 SVN/Git 的配置,Parameter 的配置等都变成 Code,即 Pipeline as Code。
Pipeline(流水线)是用户定义的 CD 流水线模型。流水线的代码定义了整个的构建过程,它通常包括构建,测试和交付应用程序的阶段。
Jenkins 允许你将配置文件和执行步骤以代码的形式保持,这样就可以做到像管理源码一样管理 Jenkins 任务。
注:Jenkins Pipeline (流水线)是一套插件,将持续交付的实现和实施集成到 Jenkins 中。其提供了一套可扩展的工具,用于将「简单到复杂」的交付流程实现为「持续交付即代码」。
Jenkins Pipeline (流水线) 的定义通常被写入到一个文本文件——Jenkinsfile 中,该文件可以被放入项目的源代码控制库中。
2.2 流水线的分类
Jenkins 流水线分为脚本式的和声明式的
- 脚本式流水线比较灵活,可以嵌入一些 Groovy 语言编程,功能比较强大,但是对于新手而言上手较难。
- pipeline 块是 声明式流水线的基础。
- 声明式流水线更具有结构化,减少对 Groovy 语言的依赖,对新用户比较友好。
- node 块是 脚本化流水线的基础
2.2 为什么使用流水线
本质上,Jenkins 是一个自动化引擎,它支持许多自动模式。流水线向 Jenkins 中添加了一组强大的工具,支持用例简单的持续集成到全面的 CD 流水线。用户可以利用很多流水线的特性:
- 代码:Pipeline 以代码的形式实现,通常被检入源代码控制,使团队能够编辑、审查和迭代其 CD 流程
- 可持续性:Jenkins 重启或者中断后都不会影响 Pipeline Job
- 停顿:Pipeline 可以选择停止并等待人工输入或批准,然后在继续 Pipeline 运行
- 多功能:Pipeline 支持现实世界的复杂 CD 要求,包括 fork/join 子进程,循环和并行执行工作的能力
- 可扩展:Pipeline 插件支持其 DSL 的自定义扩展以及其他插件集成的多个选项
简而言之,就是使用 jenkins 的流水线比研发自己手动执行
- 编译
- 制作镜像
- 推送镜像到 hub
的流程有很多优势。
3. 声明式流水线——jenkinsfile 的语法
3.1 声明式流水线基础语法
- pipeline:声明其内容为一个声明式的 Pipeline 脚本
- agent:执行节点(job 运行的 slave 或者 master 节点)
- stages:阶段集合,包括所有的阶段(例如:打包、部署等各个阶段)
- stage:阶段,被 stages 包括,一个 stages 可以有多个 stage
- steps: 步骤,为每个阶段的最小执行单位,被 stage 包括
- post:执行构建后的操作,根据构建结果来执行对应的操作
3.2 典型的声明式流水线例子
在声明式流水线语法中,pipeline 块定义了整个流水线中完成的所有工作。
Jenkinsfile (Declarative Pipeline)
pipeline {
agent any /*1*/
stages {
stage('Build') {
/*2*/
steps {
// /*3*/
}
}
stage('Test') {
/*4*/
steps {
// /*5*/
}
}
stage('Deploy') {
/*6*/
steps {
// /*7*/
}
}
}
}
上述定义的 1-7 的解释如下:
- 1 -> 在任何可以用的代理上,执行流水线或它的任何阶段。
- 2 -> 定义「Build」阶段
- 3 -> 定义与 「Build」阶段相关的步骤
- 4 -> 定义 「Test」阶段
- 5 -> 定义与 「Test」阶段相关的步骤
- 6 -> 定义 「Deploy」阶段
- 7 -> 定义与 「Deploy」阶段相关

本文深入介绍了Jenkins这款开源持续集成工具,特别是重点讲解了2.0版本引入的Pipeline特性。Pipeline允许将构建流程以代码形式管理,分为脚本式和声明式两种。声明式流水线更易于理解和维护,减少了对Groovy的依赖。文中详细阐述了声明式流水线的基本语法,包括pipeline、agent、stages、stage、steps、environment、parameters、post等关键元素,并给出了实际的代码示例。此外,还讨论了使用Pipeline的优势,如代码化管理、持续性、灵活性等。最后,文章提到了一些实用的工具和关键字,如input、when、options等。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



