美文网首页
Jenkins Artive Choices Plugin. 动

Jenkins Artive Choices Plugin. 动

作者: kagenZhao | 来源:发表于2021-01-15 17:58 被阅读0次

    本文根据Jenkins-2.272版本进行测试, 不保证一直有效!!!

    由于项目使用参数化构建, 而且参数比较多, 一屏幕都放不下了..... 所以寻求方法来只显示重要参数.

    需求

    模拟一个需求(如图1,图2):

    • 当value1选中时, value2可输入, value3不可输入
    • 当value1未选中时, value2可不输入, value3可输入


      图1
      图2

    现在想要优化一下这个需求:

    • 当value1选中时, value2可输入, value3不可输入并且value3隐藏
    • 当value1未选中时, value3可输入, value2可不输入并且value3隐藏

    解决方案

    首先来看一下jenkins参数页的HTML是什么样子的

    图3
    Artive Choices 插件其实是把每一个参数整体包装成<div class="tr form-group">...</div>

    那我们就在配置项里尝试获取一下这个div, 在VALUE2Groovy Script中写入一下代码, 给input定义一个id

    return """
      <input name="value" id="VALUE2"  value="VALUE2">
    """
    

    先尝试添加<script>看能否执行.

    return """
      <input name="value" id="VALUE2"  value="VALUE2">
      <script>
      console.log("执行~~")
      </script>
    """
    

    看到控制台并没有打印, 知道内部应该是吧脚本返回的字符串 赋值给了innerHTML,

    尝试其他方法绕过innerHTML限制

    return """
      <input name="value" id="VALUE2"  value="VALUE2">
      <img src="error/image/url" style="display: none;" onerror="console.log('可以执行')">
    """
    

    改成上面代码之后重新加载参数页, 控制台成功看到了打印结果, 证明此方法可行.

    最终修改代码:

    VALUE2改为:

    if (VALUE1) {
        return """
      <input name="value" id="VALUE2"  value="VALUE2">
      <img src="error/image/url" style="display: none;" onerror='document.getElementById("VALUE2").closest(".form-group").style.display=""'>
    """  
    } else {
      return """
      <input name="value" id="VALUE2"  value="VALUE2">
      <img src="error/image/url" style="display: none;" onerror='document.getElementById("VALUE2").closest(".form-group").style.display="none"'>
    """ 
    }
    
    

    VALUE3改为:

    if (VALUE1) {
        return """
      <input name="value" id="VALUE3"  value="VALUE3">
      <img src="error/image/url" style="display: none;" onerror='document.getElementById("VALUE3").closest(".form-group").style.display="none"'>
    """  
    } else {
      return """
      <input name="value" id="VALUE3"  value="VALUE3">
      <img src="error/image/url" style="display: none;" onerror='document.getElementById("VALUE3").closest(".form-group").style.display=""'>
    """ 
    }
    
    

    最终运行结果如下图:

    result.gif

    更多复杂功能按照这个方式可以继续拓展

    相关文章

      网友评论

          本文标题:Jenkins Artive Choices Plugin. 动

          本文链接:https://www.haomeiwen.com/subject/ugmwaktx.html