根据参数禁用Jenkins Build按钮

时间:2015-12-30 17:18:09

标签: jenkins

我有带参数的Jenkins作业。我想禁用构建按钮并启用只有用户在字符串参数中输入有效值。我怎么能这样做?

4 个答案:

答案 0 :(得分:1)

您可以使用validating string parameter plugin

或者如果你想自己滚动一个,请查看documentation

来自文档:“这称为”表单验证“,Jenkins在服务器端执行此操作。”这意味着如果使用此验证方法,则不希望禁用构建按钮。

答案 1 :(得分:1)

安装Simple Theme插件。这将有助于您加载自己的JavaScript (https://wiki.jenkins.io/display/JENKINS/Simple+Theme+Plugin

一旦将其安装后的副本粘贴到" / var / lib / jenkins / userContent" as custom.js

替换" X_BUILD_NUMBER"使用您想要验证的字符串参数。

function custom() 

    if (!document.querySelector("td.setting-main>div>input[value='X_BUILD_NUMBER']")) {
        return;
    } else{
        var inputElement = "";
        if(document.querySelector("td.setting-main>div>input[value='X_BUILD_NUMBER']").parentNode){
            var childNodes = document.querySelector("td.setting-main>div>input[value='X_BUILD_NUMBER']").parentNode.childNodes;
            if(Object.keys(childNodes).length){
                for (var key in childNodes) {
                    if((Object.prototype.toString.call(childNodes[key]) == "[object HTMLInputElement]") && (childNodes[key].name == "value")){
                        inputElement = childNodes[key];
                    }
                }
            }
        }
    }

    /* init */

    if (inputElement) {

        var buildNumber = inputElement.value;

        setTimeout(function() {
            if (document.getElementById("yui-gen1-button")) {
                document.getElementById("yui-gen1-button").disabled = buildNumber ? false : true;
            }
        }, 100);
    }

    /* Register keyup event */

    if (inputElement) {

        inputElement.onkeyup = function() {

            var buildNumber = inputElement.value;

            if (document.getElementById("yui-gen1-button")) {
                document.getElementById("yui-gen1-button").disabled = buildNumber ? false : true;
            }
        }
    }

}

document.addEventListener('DOMContentLoaded', custom, false);

答案 2 :(得分:0)

上面显示的方法还有一个扩展 - 上述方法检查每个 Jenkins 页面上的 BUILD 按钮,因为将使用简单的主题插件。

为了在工作级别进行更改 - 我们可以使用 Active Choices (https://plugins.jenkins.io/uno-choice/)

  1. 转到相应作业的配置部分
  2. 在常规选项卡中选择此项目已参数化选项
  3. 添加名为“Validating_Parameter”的新字符串参数
  4. 添加另一个类型为 Active Choice Reactive Reference Parameter 的参数
  5. 在 Active Choice Reactive Reference 参数中 - 名称可以为空且选择类型应为 Formatted Hidden HTML
  6. 通过选择 Groovy 添加以下 groovy 脚本:
return '''
<script>
function custom() {
    if (!document.querySelector("td.setting-main>div>input[value='Validating_Parameter']")) {
        return;
    } else {
        var inputElement = "";
        if (document.querySelector("td.setting-main>div>input[value='Validating_Parameter']").parentNode) {
            var childNodes = document.querySelector("td.setting-main>div>input[value='Validating_Parameter']").parentNode.childNodes;
            if (Object.keys(childNodes).length) {
                for (var key in childNodes) {
                    if ((Object.prototype.toString.call(childNodes[key]) == "[object HTMLInputElement]") && (childNodes[key].name == "value")) {
                        inputElement = childNodes[key];
                    }
                }
            }
        }
    }


    /* init */

    if (inputElement) {

        var buildNumber = inputElement.value;

        setTimeout(function () {
            if (document.getElementById("yui-gen3-button")) {
                document.getElementById("yui-gen3-button").disabled = buildNumber.match(/^[a-zA-Z0-9\\s,\\!.-]{15,}$/) ? false : true;
            }
        }, 100);
    }

    /* Register keyup event */

    if (inputElement) {

        inputElement.onkeyup = function () {

            var buildNumber = inputElement.value;

            if (document.getElementById("yui-gen3-button")) {
                document.getElementById("yui-gen3-button").disabled = buildNumber.match(/^[a-zA-Z0-9\\s,\\!.-]{15,}$/) ? false : true;
            }
        }
    }

}

document.addEventListener('DOMContentLoaded', custom, false);
</script>
'''

@Renjith 从上述代码引用的代码

答案 3 :(得分:0)

谢谢@Simeen Khan。我正在积极寻找这个。我发现你的帖子很有帮助,但根据 jenkins 使用的插件,有一件事需要改变。

对于较新的 jenkins 和较新的“Build With Parameters”插件,documentElementID 将更改为 gen4 或更高版本。

我们可以使用 jenkins 参数页面上的检查构建按钮来找到这些详细信息。

例如在我的 jenkins 上它是 <button type="button" tabindex="0" id="yui-gen4-button">Build</button>

对于这个 Simeen 的脚本将如下所示:

return '''
<script>
function custom() {
    if (!document.querySelector("td.setting-main>div>input[value='Validating_Parameter']")) {
        return;
    } else {
        var inputElement = "";
        if (document.querySelector("td.setting-main>div>input[value='Validating_Parameter']").parentNode) {
            var childNodes = document.querySelector("td.setting-main>div>input[value='Validating_Parameter']").parentNode.childNodes;
            if (Object.keys(childNodes).length) {
                for (var key in childNodes) {
                    if ((Object.prototype.toString.call(childNodes[key]) == "[object HTMLInputElement]") && (childNodes[key].name == "value")) {
                        inputElement = childNodes[key];
                    }
                }
            }
        }
    }

 


    /* init */

 

    if (inputElement) {

 

        var buildNumber = inputElement.value;

 

        setTimeout(function () {
            if (document.getElementById("yui-gen4-button")) {
                document.getElementById("yui-gen4-button").disabled = buildNumber.match(/^[a-zA-Z0-9\\s,\\!.-]{15,}$/) ? false : true;
            }
        }, 100);
    }

 

    /* Register keyup event */

 

    if (inputElement) {

 

        inputElement.onkeyup = function () {

 

            var buildNumber = inputElement.value;

 

            if (document.getElementById("yui-gen4-button")) {
                document.getElementById("yui-gen4-button").disabled = buildNumber.match(/^[a-zA-Z0-9\\s,\\!.-]{15,}$/) ? false : true;
            }
        }
    }

 

}

 

document.addEventListener('DOMContentLoaded', custom, false);
</script>
'''