背景
我一直在使用 Jenkins 的多分支流水线这种类型的Job(应该是最复杂的一种Job了吧,但是好用啊),就遇到一个问题:因为我的 Jenkinsfile 是写了一个通用的(我嫌统一变更维护太麻烦,并没有在每个代码工程内置一个 Jenkinsfile 文件,所以利用 Jenkins 的 Managed files 管理公共通用的 Jenkinsfile 文件),文件内容使用 Pipeline 脚本来进行。
然鹅…… 再牛逼的通用脚本,在多种不同类型的Job需求面前也会显得力不从心(我还是不想为每个代码库中添加 Jenkinsfile,除非这个代码库的 Jenkinsfile 定制化比通用的差异很大那才单独写)。
还有就是有的时候,我希望在每个 Job 中可以配置一些参数,然后在公共的 Pipeline 脚本中根据不同 Job 配置的参数来做不同的事情(你看本文的时候你可能感觉不到,但是如果你看完本文用上这个插件后,你就会发现 —— 卧槽,一切可配啊)。
针对以上问题,我到插件库中寻找和测试了很多与 “config、configuration、properties、parameter” 有关的插件,大部分都是只支持普通的 Job,对 MultiBranch 这样的多分支流水线的支持都没有(也就是在普通Job中能显示自定义参数或配置,然后在多分支流水线配置页面就没有)。
经过好几个小时的逐个测试验证(你不觉得 Jenkins 的问题百度很难直接找到答案嘛,插件太多坑也太多也都要自己踩,但是 Jenkins 也足够的灵活和牛逼),最终验证得到一个插件 “Folder Properties” 可以完美满足以上场景需求。
在经历验证后,完美使用,所以发个文章分享一下,给有同样需求的童鞋们抛个路引。
使用
很简单,插件安装后,在都分支流水线的配置页面中会出现一个 Folder Properties 区域,这个地方界面简单明了,就是可以逐个添加参数键值对。
添加的参数,我们可以直接在 Jenkinsfile 的 Pipeline 脚本中获取,使用 env.参数名
即可,如下:
withFolderProperties{
echo("P1: ${env.Shanhy_P1}")
echo("P2: ${env.Shanhy_P2}")
}
执行 Job 后,控制台正常输出,验证通过。
(END)