专栏首页DevOps时代的专栏Jenkins 中如何实现参数联动构建

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的参数都要列举在页面,容易迷惑用户)。

好的做法应该是把用户不关心的东西隐藏,易错的地方(甚至错误发生了)有足够的提示,并提示用户进一步的修正。

作者:jaymz明 来源:简书,本文获作者授权转载。

本文分享自微信公众号 - DevOps时代(DevOpsTimes),作者:jaymz明

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • DevOps实施:项目群管理(PPM)中的需求和计划管理

    本文面向的是企业IT用户(尤其是每年要投入数以百计的人力,开发维护十几个甚至几十个上百个上不同系统的企业),在组织范围内的计划和需求消耗太多的问题。而对于只有十...

    DevOps时代
  • 基于 Nginx+lua+Memcache 实现灰度发布

    灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见...

    DevOps时代
  • Docker 世界中的配置管理:5分钟让你明白如何在Puppet,Chef,Ansible之间选择

    本文翻译并节选自《DevOps2.0的工具集(DevOps黑宝书)——打造自动化的持续交付流程》一书,转自译者CSDN博客,转载请注明出处,译者:胡帅。

    DevOps时代
  • Stream篇(3)【StreamReader】

    说明:实现一个TextReader,是其子类。父类是Text读取器,子类是流读取器 一、构造函数: 1、StreamReader(Stream stream)s...

    小端
  • 腾讯云服务器如何定价?腾讯云服务器价格查询便捷入口

    许多用户购买腾讯云服务器之前都想先查询下腾讯云服务器价格表,其实腾讯云有专门的价格计算器,只是很多用户没有注意到而已,腾讯云服务器价格通过价格计算器查询下就知道...

    人工智能谁与争锋
  • Github 项目推荐 | 面向 JS 开发者的机器学习框架 TensorFlow.js 以及相关示例

    TensorFlow.js 是谷歌在 2018 TensorFlow 开发者峰会推出的开源库,它可以使用 Java 和灵活且直观的 API 在浏览器中定义、训练...

    AI研习社
  • 腾讯云服务器空间价格表(价格查询入口)

    许多用户购买腾讯云服务器之前都想先查询下腾讯云服务器价格表,其实腾讯云有专门的价格计算器,只是很多用户没有注意到而已,腾讯云服务器价格通过价格计算器查询下就知道...

    人工智能谁与争锋
  • 腾讯云服务器价格,腾讯云价格怎么查?

    许多用户购买腾讯云服务器之前都想先查询下腾讯云服务器价格表,其实腾讯云有专门的价格计算器,只是很多用户没有注意到而已,腾讯云服务器价格通过价格计算器查询下就知道...

    人工智能谁与争锋
  • 腾讯云服务器价格表查询入口,价格定价查询

    许多用户购买腾讯云服务器之前都想先查询下腾讯云服务器价格表,其实腾讯云有专门的价格计算器,只是很多用户没有注意到而已,腾讯云服务器价格通过价格计算器查询下就知道...

    人工智能谁与争锋
  • 腾讯云服务器价格怎么样?腾讯云服务器有哪些优惠活动?

    许多用户购买腾讯云服务器之前都想先查询下腾讯云服务器价格表,其实腾讯云有专门的价格计算器,只是很多用户没有注意到而已,腾讯云服务器价格通过价格计算器查询下就知道...

    聚优云惠

扫码关注云+社区

领取腾讯云代金券