首页/开发/CI/CD 与发布速查/Jenkins 声明式流水线(Jenkinsfile)
工具链要点63 条

Jenkins 声明式流水线(Jenkinsfile)

以 Jenkinsfile 定义流水线:pipeline 块包含 agent、stages、post;配置随代码评审与版本管理,替代界面里的手工配置。

CI/CD 与发布速查开发更新于 2026-10-13

Jenkinsfile 声明式流水线

以 Jenkinsfile 定义流水线:pipeline 顶层包含 agent、stages、post,配置随代码评审与版本管理,替代界面里的手工配置,让流水线定义可追溯、可回滚。声明式提供固定骨架、可读性好、评审有共同语言;复杂逻辑用共享库或脚本文件封装,而不是全部塞进 Jenkinsfile。

基本信息

结构pipeline 块包含 agent、stages、post
阶段stage 加 steps 描述步骤
后置post 支持 always、success、failure
存放仓库根目录 Jenkinsfile,随代码评审
扩展复杂逻辑抽到共享库或脚本文件

典型使用场景

  • 标准化骨架:团队阅读成本一致,评审有共同语言。
  • 多分支流水线:每个分支共用同一份 Jenkinsfile。
  • 共享库调用:通用步骤封装成库函数复用。
  • 并行执行:parallel 块让独立阶段同时运行。
  • 条件触发:when 控制阶段在特定分支或标签执行。

声明式流水线

声明式流水线
pipeline {
  agent any
  stages {
    stage('build') {
      steps { sh 'make build' }
    }
    stage('test') {
      steps { sh 'make test' }
    }
  }
  post {
    always { junit 'reports/*.xml' }
  }
}

顶层结构

块作用
agent指定执行节点或标签
stages阶段与步骤序列
postalways、success、failure 收尾动作
environment环境变量与凭据绑定
声明式骨架清晰但表达力有限:复杂逻辑封装成共享库或脚本文件,而不是继续堆在文件里。
凭据用绑定方式注入:不要硬编码进脚本,日志里也不会被打印出来。
界面里临时改动的配置不落库:改动要回到 Jenkinsfile 提交,版本才可追溯。
何时用脚本式:需要循环、异常捕获与动态阶段时,脚本式或共享库更顺手,两种风格可以混用。
when 与 input 是声明式常用能力:按分支、标签、变更范围控制执行,关键环境接人工确认。
并行与矩阵:声明式支持 parallel 与 matrix 指令,多平台任务不必复制阶段定义。
失败排查可从界面重放脚本辅助定位,但修复结果仍要回到文件提交,保证版本一致。
构建留档:junit 与 archiveArtifacts 等步骤在 post 里统一收尾,报告与产物不随构建机清理丢失。

易错点

  • 在界面里改流水线不落库:版本不可追溯,与流水线即代码原则相悖。
  • 把大量逻辑堆进 Jenkinsfile:维护困难,应抽取到共享库。
  • 凭据硬编码在脚本里:日志泄漏风险,使用凭据绑定注入。
  • stage 粒度太粗:失败定位只能到整体流水线,排查效率低。
  • post 未处理失败路径:失败时报告与产物没保留,事后无据可查。
  • 共享库无版本控制:库一变所有流水线同时受影响,变更要能回滚。

数据来源与参考

  • Jenkins 手册《Pipeline Syntax》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌