什么是 Jenkins Pipeline
Jenkins Pipeline(或简称为 “Pipeline”)是一套插件,将持续交付的实现和实施集成到 Jenkins
持续交付 Pipeline 自动化的表达了这样一种流程:将基于版本控制管理的软件持续的交付到你的用户和消费者手中。
Jenkins Pipeline 提供了一套可扩展的工具,用于将 “简单到复杂” 的交付流程实现为 “持续交付即代码”。Jenkins Pipeline 的定义通常被写入到一个文本文件(称为 Jenkinsfile)中,该文件可以被放入项目的源代码控制库中。
快速开始使用 Pipeline:
- 将以下示例复制到你的仓库中并命名为
Jenkinsfile
; - 单击 Jenkins 中的
New Item
菜单; - 为你的新工程起一个名字(例如 My Pipeline),选择
Multibranch Pipeline
; - 单击
Add Source
按钮,选择你想要使用的仓库类型并填写详细信息; - 单击
Save
按钮,观察你的第一个 Pipeline 运行。
您可能需要修改 Jenkinsfile 以便应用在您自己的项目中。尝试修改 sh 命令,使其与您本地运行的命令相同。
在配置好 Pipeline 之后,Jenkins 会自动检查你仓库中创建的任何新的分支或合并请求,并开始为它们运行 Pipeline。
快速开始示例
下面是一个简单的 Pipeline 各种语言的复制和粘贴示例。
- Java
1 | Jenkinsfile (Declarative Pipeline) |
- Node.js / JavaScript
1 | Jenkinsfile (Declarative Pipeline) |
- Ruby
1 | Jenkinsfile (Declarative Pipeline) |
- Python
1 | Jenkinsfile (Declarative Pipeline) |
- PHP
1 | Jenkinsfile (Declarative Pipeline) |
执行多个步骤
Pipelines 由多个步骤组成,允许你构建,测试和部署应用。Jenkins Pipeline 允许你使用一种简单的方式组合多个步骤,以帮助你实现多种类型的自动化构建过程。
可以把 “步骤(step)” 看做一个执行单一动作的单一命令。当一个步骤运行成功时继续运行下一个步骤。当任何一个步骤执行失败时,Pipeline 的执行结果也为失败。当所有的步骤都执行完成并且为成功时,Pipeline 的执行结果为成功。
Linux,BSD 和 MacOS
在Linux,BSD 和 macOS(类Unix)系统中的 shell 命令,对应于 Pipeline 中的一个 sh
步骤(step)
1 | Jenkinsfile (Declarative Pipeline) |
Windows
基于 Windows 的系统使用 bat 步骤表示执行批处理命令。
1 | Jenkinsfile (Declarative Pipeline) |
超时,重试和更多
Jenkins Pipeline 提供了很多的步骤,这些步骤可以相互组合嵌套,方便地解决像重复执行步骤直到成功(重试)和如果一个步骤执行花费的时间太长则退出(超时)等问题。
1 | Jenkinsfile (Declarative Pipeline) |
”Deploy“ 阶段(stage)重复执行 flakey-deploy.sh
脚本3次,然后等待 health-check.sh
脚本最长执行3分钟。如果 health-check.sh
脚本在3分钟内没有完成,Pipeline 将会标记在 “Deploy” 阶段失败。
内嵌类型的步骤,例如 timeout
和 retry
可以包含其他的步骤,包括 timeout
和 retry
.
我们也可以组合这些步骤。例如,如果我们想要重试部署任务5次,但是总花费的时间不能超过3分钟。
1 | Jenkinsfile (Declarative Pipeline) |
完成时动作
当 Pipeline 运行完成时,你可能需要做一些清理工作或者基于 Pipeline 的运行结果执行不同的操作,这些操作可以放在 post
部分。
1 | Jenkinsfile (Declarative Pipeline) |