本文根據(jù)Jenkins-2.272版本進(jìn)行測試, 不保證一直有效!!!
由于項(xiàng)目使用參數(shù)化構(gòu)建, 而且參數(shù)比較多, 一屏幕都放不下了..... 所以尋求方法來只顯示重要參數(shù).
需求
模擬一個(gè)需求(如圖1,圖2):
- 當(dāng)value1選中時(shí), value2可輸入, value3不可輸入
-
當(dāng)value1未選中時(shí), value2可不輸入, value3可輸入
圖1
圖2
現(xiàn)在想要優(yōu)化一下這個(gè)需求:
- 當(dāng)value1選中時(shí), value2可輸入, value3不可輸入并且value3隱藏
- 當(dāng)value1未選中時(shí), value3可輸入, value2可不輸入并且value3隱藏
解決方案
首先來看一下jenkins參數(shù)頁的HTML是什么樣子的
圖3
Artive Choices 插件其實(shí)是把每一個(gè)參數(shù)整體包裝成
<div class="tr form-group">...</div>
那我們就在配置項(xiàng)里嘗試獲取一下這個(gè)div
, 在VALUE2
的Groovy Script
中寫入一下代碼, 給input定義一個(gè)id
return """
<input name="value" id="VALUE2" value="VALUE2">
"""
先嘗試添加<script>
看能否執(zhí)行.
return """
<input name="value" id="VALUE2" value="VALUE2">
<script>
console.log("執(zhí)行~~")
</script>
"""
看到控制臺并沒有打印, 知道內(nèi)部應(yīng)該是吧腳本返回的字符串 賦值給了innerHTML
,
嘗試其他方法繞過innerHTML
限制
return """
<input name="value" id="VALUE2" value="VALUE2">
<img src="error/image/url" style="display: none;" onerror="console.log('可以執(zhí)行')">
"""
改成上面代碼之后重新加載參數(shù)頁, 控制臺成功看到了打印結(jié)果, 證明此方法可行.
最終修改代碼:
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=""'>
"""
}
最終運(yùn)行結(jié)果如下圖:
result.gif
更多復(fù)雜功能按照這個(gè)方式可以繼續(xù)拓展