五、流水线介绍
一、什么是流水线
Jenkins Pipeline(或简称“管道”,大写“P”)是一套插件,支持在Jenkins中实现和集成连续交付管道。
连续交付(CD)管道是您从版本控制到用户和客户的软件获取过程的自动化表达。对软件的每一次更改(在源代码管理中提交)都要经过一个复杂的过程才能发布。这个过程包括以可靠和可重复的方式构建软件,以及通过多个测试和部署阶段推进构建的软件(称为“构建”)。
Pipeline提供了一组可扩展的工具,用于通过Pipeline领域特定语言(DSL)语法将简单到复杂的交付管道建模为“代码”。
Jenkins管道的定义被写入一个文本文件(称为Jenkinsfile),该文本文件又可以提交到项目的源代码管理存储库。 这是“管道即代码”的基础;将CD管道视为应用程序的一部分,以便像任何其他代码一样进行版本控制和审查。
创建Jenkinsfile并将其提交给源代码管理可以带来许多直接的好处:
- 自动为所有分支和拉取请求创建管道构建过程。
- 管道上的代码审查/迭代(以及剩余的源代码)。
- 管道的审计跟踪。
- 可由项目的多个成员查看和编辑。
二、声明式与脚本式管道语法
Jenkinsfile可以使用两种类型的语法编写——Declarative(声明式)和Scripted(脚本式)。
声明式管道和脚本式管道的构造有根本不同。声明式管道是Jenkins管道的最新功能,它:
- 提供了比脚本化管道语法更丰富的语法功能,并且
- 旨在使编写和读取管道代码变得更容易。
然而,写入Jenkinsfile的许多单独的语法组件(或“步骤”)对于Declarative和Scripted Pipeline都是通用的。
三、特性
从根本上说,Jenkins是一个支持多种自动化模式的自动化引擎。Pipeline为Jenkins添加了一组强大的自动化工具,支持从简单的连续集成到全面的CD管道的用例。通过对一系列相关任务进行建模,用户可以利用Pipeline的许多功能:
- 代码:管道在代码中实现,通常检查到源代码管理中,使团队能够编辑、审查和迭代其交付管道。
- 持久化:Jenkins重启后依然存在。
- 可暂停:管道可以选择停止并等待人工输入或批准,然后再继续运行管道。
- 通用性:管道支持复杂的现实CD需求,包括分叉/连接、循环和并行执行工作的能力。
- 可扩展:Pipeline插件支持对其DSL[1]的自定义扩展,并支持与其他插件集成的多种选项。
四、概念
管道
管道是CD管道的用户定义模型。Pipeline的代码定义了整个构建过程,通常包括构建应用程序、测试应用程序和交付应用程序的阶段。
节点
节点是一台机器,它是Jenkins环境的一部分,能够执行管道。
阶段
阶段块定义了通过整个管道执行的任务的概念上不同的子集(例如“构建”、“测试”和“部署”阶段),许多插件都使用它来可视化或呈现Jenkins管道的状态/进度。
Step
一项任务。基本上,步骤告诉Jenkins在特定时间点(或过程中的“步骤”)要做什么。例如,要执行shell命令,请使用sh步骤:sh“make”。当一个插件扩展了Pipeline DSL时,通常意味着该插件实现了一个新步骤。
五、示例
声明式
pipeline {
agent any
stages {
stage('Build') {
steps {
//
}
}
stage('Test') {
steps {
//
}
}
stage('Deploy') {
steps {
//
}
}
}
}
agent any
表示在任何可用的代理上执行此管道或其任何阶段。stage('Build')
定义一个Build阶段。steps
定义步骤。
脚本式
node {
stage('Build') {
//
}
stage('Test') {
//
}
stage('Deploy') {
//
}
}
node
和上面的agent any
相同。
六、简单流水线
这是个简单的流水线,只是在控制台输出Hello world!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南