actice choice 這個插件的作用是可以在參數化構建時,創建一個可選的參數
例如,用jenkins創建一個發佈project時,我們發佈過程中需要選擇環境、服務名稱等,我們希望在參數化構建時,可以提供一個下拉框給用戶進行選擇,這時候可以使用這個插件來創建這樣的可選參數
下面是效果圖
如何使用actice choice 插件
1、安裝active choices插件
2、創建一個project,勾選參數化構建
勾選Groovy script
將選項寫成上圖這個樣子即可。這裏選項是固定的,我們可以這樣寫死,如果選項是動態的呢?比如產品這個選項,現在有十個產品,後面可能會增加到30個。我們寫死的化很需要一直維護。這種情況怎麼辦?能否動態的獲取所有產品名稱呢?答案是肯定的
比如:我們公司產品我是通過python腳本調用cmdb的api接口獲取到的,然後將獲取的所有產品寫入到文件中。一行一個產品,如下圖這樣子
Groovy script從文件中獲取變量值
參數類型
參數類型可以設置爲單選和多選,還有radio buttons這種單選框,check box是複選框,可以根據自己的需求來使用
擴展
An Active Choices Reactive Parameter
active choice插件還有一個好用的功能,就是當有多個參數時,第二個參數的值,會根據第一個參數選擇的值進行變換。舉一個很常見的場景:
在發佈時,當選擇生產環境時,第二個參數的選項裏面應該出現生產環境的服務器,當選擇測試環境時,第二個選項裏面應該出現測試環境的服務器。
我這裏有一個需求,當選擇一個模塊時,會根據模塊名稱,查通過CMDB接口查詢哪些產品有該模塊。
先看下效果圖,由於我本機測試環境沒有辦法連CMDB,所以只測試當選擇一個module時,我的aaa參數這裏,也出現該module。效果圖如下:
aaa參數配置
module=module def list = "/opt/aaa.py $module".execute().text.readLines() list.each{language-> println language }
/opt/aaa.py腳本內容
[root@localhost opt]# cat aaa.py #!/usr/bin/python import sys print sys.argv[1]
該腳本很簡單,就是傳遞一個參數,然後print這個參數。在aaa這個變量裏面,這個參數是關聯的module,所以打印的就是用戶選擇的module的名稱。
參考鏈接:
https://www.jianshu.com/p/3f54cf1674ce
官方文檔:
https://wiki.jenkins.io/display/JENKINS/Active+Choices+Plugin
要查詢某個插件的用法,可以在這裏根據插件名稱搜索