工具链要点63 条

Jenkins 共享库

把可复用流水线逻辑集中到独立仓库:vars/ 定义全局步骤、src/ 存放类;流水线以 @Library 引用,建议固定版本。

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

共享库是什么

把可复用流水线逻辑集中到独立仓库:vars/ 定义全局步骤、src/ 存放类;流水线以 @Library 引用,建议固定版本。它把「每个仓库各写一遍流水线」变成组织级复用——公共逻辑单点维护、统一升级。共享库要像产品一样维护:评审、版本、变更说明与兼容策略齐全,破坏性改动要留迁移窗口。

基本信息

结构vars/(全局步骤)与 src/(类)
引用@Library('lib@v1.9.0') _
配置全局或文件夹级加载
版本用 tag 固定,避免无感漂移
维护像产品一样有评审、版本与变更说明

典型使用场景

  • 组织标准化:所有流水线共用同一套构建与发布步骤
  • 单点修复:公共逻辑改一处,全部引用点受益
  • 版本纪律:按 tag 升级,回归可定位
  • 团队分工:平台团队维护库,业务团队只写参数
  • 验证推广:先在测试流水线验证新版本再放开
  • 废弃策略:旧版本保留窗口,给迁移留时间

引用共享库

引用共享库
@Library('ci-lib@v1.9.0') _   # 固定 tag 引用
pipeline {
  agent any
  stages {
    stage('build') {
      steps { buildApp 'service-a' }   # 全局步骤来自 vars/
    }
  }
}

目录结构读法

路径内容建议
vars/全局步骤脚本保持薄,逻辑放 src/
src/Groovy 类可单测的复杂逻辑
resources/静态资源文件按需取用
引用tag 或分支生产环境固定 tag
加载全局或文件夹级按团队范围隔离
共享库要像产品一样维护:评审、版本、变更说明与兼容策略齐全。
保持调用面稳定:废弃参数先标记再移除,给使用方迁移窗口。
逻辑下沉 src/ 便于测试:vars/ 只做薄封装,复杂判断进类里。

开发与治理

  • 变更自测:库改动先在沙箱流水线验证再合入
  • 定期盘点:闲置的全局步骤清理,避免库无限膨胀
分层要清楚:业务编排留在薄步骤里,跨流水线的通用逻辑下沉到类。
为公开步骤准备样例流水线,升级库前先跑一遍兼容验证。
文档写清每个全局步骤的参数与示例,使用方按文档接入,减少口头答疑。

易错点

  • 引用默认分支:库的任意变更立即影响全部流水线
  • 共享库过度耦合具体项目:通用性下降,退化成复制粘贴
  • 破坏性升级不留窗口:调用方批量失败,先兼容后移除
  • 库内直接放凭据:暴露面扩大到所有引用方,凭据仍由 Jenkins 集中管理

数据来源与参考

  • Jenkins 手册《Extending with Shared Libraries》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌