共享库是什么
把可复用流水线逻辑集中到独立仓库: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/ 只做薄封装,复杂判断进类里。
开发与治理
- 变更自测:库改动先在沙箱流水线验证再合入
- 定期盘点:闲置的全局步骤清理,避免库无限膨胀
分层要清楚:业务编排留在薄步骤里,跨流水线的通用逻辑下沉到类。
为公开步骤准备样例流水线,升级库前先跑一遍兼容验证。
文档写清每个全局步骤的参数与示例,使用方按文档接入,减少口头答疑。