概述
Jenkins shared-library 也就是流水线共享库,使用 Groovy 编写,用于封装 Jenkins 流水线(Pipeline)脚本(Jenkinsfile)中的通用逻辑。更多描述,请查看 Jenkins 官方文档。
为什么?
在企业中,通常有很多项目的构建、发布过程是非常相似的。有统一的软件构建、发布流程,对于提高团队效率,减少不必要的面对面沟通的重要手段。但,随之而来的一个问题是:
- 需要维护很多流水线脚本
- 流程上一旦有改动,就需要对很多项目进行修改
- 部分情况下,流水线的维护者和项目的开发者不在一个团队,从而没有修改代码库的权限
对于以上所描述的情况,相信很多人都能想到,我们需要一个集中存放流水线脚本的地方。例如:有人希望可以把流水线脚本(Jenkinsfile)存放到一个 HTTP 服务器上,让每个项目都使用这个服务器上的脚本。
但是,我想说的是:千万不要把你们团队的软件构建、发布脚本随随便便扔一个地方了事。如果你认为这些脚本就是一些普通的文本文件,那么你就错了。正是这些脚本很大程度上影响着团队的项目迭代效率,没有人会希望看到在项目发版时遇到错误并卡住不知道问题在哪里,也不知道是谁在什么时候处于什么原因做了什么修改。
SCM 就是来解决我刚刚提到的那些问题的,把脚本一定要提交到代码仓库(Git)中,而且,一定要保证脚本的修改能得到充分的复查(review)。这样,即使遇到了问题,也能够通过回滚(revert)来撤回修改。
我这里要分享的共享库,就正好是这样一种技术。它和流水线脚本一样,都是采用 Groovy 语言来编写,并保存在 SCM 中。当然,时下很多人都会选择将共享库提交到 Git 中。那么,我们在使用的时候,和使用其他依赖项目一样,会选择某个代码库以及特定分支的版本。
该系列视频由Jenkins中文社区联合TesterHome、Kubesphere、DevOps中国、云原生技术社区、禅道共同发布。更多细节请查看 https://github.com/jenkins-zh/jenkins-zh/issues/383