我有带参数的Jenkins作业。我想禁用构建按钮并启用只有用户在字符串参数中输入有效值。我怎么能这样做?
答案 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/)
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>
'''