自定义 Jenkins 流水线执行阶段需通过 Jenkinsfile 划分逻辑单元,每个 stage 应有清晰名称(如 Build、Deploy to Staging),按顺序声明于 stages{} 块中,支持嵌套、条件执行(when)、人工确认(input)及混合步骤类型;声明式语法结构严谨、UI 友好,脚本式更灵活但 stage 分组不自动。

自定义 Jenkins 流水线的执行阶段,核心是通过 Jenkinsfile 明确划分逻辑单元,并为每个阶段赋予具体任务。阶段(stage)不是预设的固定流程,而是你根据项目实际需求自主设计的执行容器。
明确 stage 名称与职责
每个 stage 应有清晰、可读的名称,直接反映其作用,比如 Build、Run Unit Tests、Deploy to Staging。名称不参与执行逻辑,但影响 UI 展示和日志定位。避免泛用“Step 1”“Stage A”这类无意义标识。
- 名称支持空格和符号,Jenkins 会自动渲染为友好标签
- 同一 stage 内所有 steps 共享上下文(如环境变量、工作目录)
- stage 可嵌套子 stage(需配合
script{}或 Blue Ocean 视图增强可读性)
在 stages 块中逐个声明
所有阶段必须包裹在 stages{} 段内,顺序即执行顺序。Jenkins 严格按从上到下的顺序串行执行各 stage,除非显式配置并发或条件跳过。
- 使用
stage('xxx'){steps{...}}定义单个阶段 - 可在 stage 内用
when判断是否执行(例如:仅当分支为main时运行部署) - 支持
failFast true(在 parallel 阶段中)控制失败传播行为
灵活组合步骤类型
每个 stage 的 steps 可混合多种操作:Shell 命令、插件调用、脚本逻辑、人工确认等。不必拘泥于“一个阶段只做一件事”,关键是职责内聚。
-
sh 'npm install && npm run build'—— 多命令可链式写在同一 sh 中 -
script{ if (env.BRANCH_NAME == 'prod') { deployToK8s() } }—— 在 stage 内嵌入 Groovy 控制流 -
input message: 'Confirm deployment to production?'—— 插入人工卡点
适配不同语法风格
声明式流水线(推荐新手)要求 stage 必须在 stages{} 内;脚本式流水线则允许在 node{} 下自由组织 stage,甚至动态生成。
- 声明式:结构强约束,UI 友好,适合标准化流程
- 脚本式:灵活性高,适合复杂判断或复用逻辑,但 stage 在界面中可能不自动分组
- 两种方式都支持 post 段统一处理成功/失败后动作,无需在每个 stage 里重复写通知逻辑


















