jenkins 实现参数联动构建

日常编写pipeline的时候,有时候会遇到针对参数作出处理(联动,校验值格式等)。一开始想到的是能不能针对build按钮作出改变,比如我在提交的时候校验下参数是否填写,是否符合要求。但是那样就需要修改jenkins源码,针对build按钮作逻辑判断。考虑到这不是简单的功能,而且有可能会破坏原有的设计,并且没有大量的测试覆盖的话,出现幺蛾子的概率很大。所以最终还是放弃了。还有位同学提出job开始做出判断,但是这种不好的地方在于用户在触发job后,必须到log中才能看到失败的原因,而且这种做法比较被动,易产生大量的error记录,不友好。

思考再三,加上看到jenkins官网上有个属性是

决定尝试一下。这个属性的作用是可以根据依赖控件选择的值,返还本控件用户期望的值。比如下图的功能:branch有两个选择:master和pr,当用户选择master的时候,默认编译artfact。当用户选择branch 为pr的时候,需要用户提供pr的artifact version,并且把build artifact的按钮灰掉,不让用户触发。限制用户行为,避免流程出错。

有两种做法:

以pr_artifact_version 配置为例。

1.通过jenkins页面配置。


referenced parameters一定要写,表明根据那个参数变化而变化。

2.pipeline 脚本的方式。

以在pipeline properties--parameters属性中加上下面的参数声明,jenkinsUtil是我自己抽出来的util类,其中的生成动态依赖方法如下图:

jenkinsUtils.generateDynamicReferenceParameter('buildArtifact','saw_branch','ET_FORMATTED_HTML','build artifact or not',jenkinsUtils.build_artifact_script())

需要传入的参数有本身控件的name,依赖的控件的name(reference),本身控件的type,次此处我用的是"ET_FORMATTED_HTML",因为我需要在页面上画出文本框,然后是本身控件的描述,最后是执行的groovy 脚本:如果branch为pr,那么返回一个不能改变的选择框,提示用户不需要关心(也可以把它隐藏,type选"ET_FORMATTED_HIDDEN_HTML"),如果是master,则就返回checkbox,默认勾选,让用户自己选择是build,还是不需要build。

综上,通过这种方式能达到原先得需求,但是本身使用起来还是有点瑕疵的,比如它的提示和容错能力还是存在问题的(需要将不同flow的参数都要列举在页面,容易迷惑用户)。好的做法应该是把用户不关心的东西隐藏,易错的地方(甚至错误发生了)有足够的提示,并提示用户进一步的修正。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 3,064评论 0 3
  • 前言 在日常开发中,经常会有发布的需求,而且经常会碰到各种环境,比如:开发环境、测试环境、生产环境。虽然可以使用手...
    tinylk阅读 39,358评论 34 78
  • 前言 Jenkins就不用做多余的介绍了,作为CI/CD首选的开源解决方案,持续集成 (Continous Int...
    王奥OX阅读 3,230评论 1 13
  • 雨后晶莹的水珠 飞机飞行的轨迹 落日下的城市 俯视中的云海 通往天国的栈道 路边的野花 雾中的小路
    盈山竹阅读 199评论 0 1
  • 01.第一步热血沸腾,浮想联翩,想着到哪天就行动,到那天然后心情不好、工作繁忙、身体状况不佳……总之能找个借口出来...
    歌琳儿阅读 193评论 0 1

友情链接更多精彩内容