jenkins插件Active Choices的使用通過參數動態控制多選參數的選項

title: jenkins插件Active Choices的使用通過參數動態控制多選參數的選項
tags: 
- jenkins
categories:
- 學習語錄

Jenkins Active Choices 插件:通過參數動態控制多選參數選項

一、插件介紹

Active Choices 插件(以前稱為 Uno Choice 插件)是 Jenkins 中一款強大的參數化構建插件,允許你創建動態交互的參數選項。其核心功能是能夠根據一個參數的值,實時動態地改變另一個參數的可選值,特別適合構建具有依賴關系的參數表單。

二、安裝插件

  1. 登錄 Jenkins 管理界面

  2. 導航至 Manage JenkinsPlugins

  3. 在 "可選插件" 標簽頁搜索 "Active Choices"

  4. 勾選插件并點擊 "Install without restart"

  5. 等待安裝完成后重啟 Jenkins(如提示)

三、核心概念

Active Choices 插件提供三種主要參數類型:

  1. Active Choices Parameter:動態單選/多選參數

  2. Active Choices Reactive Parameter:響應式參數,可根據其他參數值動態變化

  3. Active Choices Reactive Reference Parameter:用于展示參考信息的響應式參數

本文重點介紹如何使用前兩種參數類型實現"通過參數動態控制多選參數選項"。

四、使用示例:動態控制多選參數選項

假設我們有一個需求:

  • 第一個參數(環境類型):可選值為 "開發環境"、"測試環境"、"生產環境"

  • 第二個參數(部署模塊):根據選擇的環境不同,顯示不同的可選模塊

步驟 1:創建新任務

  1. 點擊 Jenkins 首頁的 "新建任務"

  2. 輸入任務名稱,選擇 "自由風格的軟件項目",點擊 "確定"

步驟 2:配置參數

  1. 在任務配置頁面,勾選 "This project is parameterized"(此項目是參數化的)

  2. 點擊 "Add Parameter",選擇 "Active Choices Parameter",配置第一個參數:

    • Name: environment(參數名稱)

    • Description: 請選擇部署環境(參數描述)

    • Choice Type: Single Select(單選)

    • Script:

      return ["開發環境", "測試環境", "生產環境"]
    • 其他選項保持默認

  3. 再次點擊 "Add Parameter",選擇 "Active Choices Reactive Parameter",配置第二個參數(動態多選參數):

    • Name: modules(參數名稱)

    • Description: 請選擇需要部署的模塊(參數描述)

    • Choice Type: Multi Select(多選)

    • Referenced parameters: environment(引用的參數,即第一個參數名稱)

    • Script:

      // 根據選擇的環境返回不同的模塊列表
      if (environment == "開發環境") {return ["用戶模塊", "訂單模塊", "支付模塊", "測試工具模塊"]
      } else if (environment == "測試環境") {return ["用戶模塊", "訂單模塊", "支付模塊"]
      } else if (environment == "生產環境") {return ["用戶模塊", "訂單模塊", "支付模塊", "監控模塊"]
      } else {return ["請先選擇環境"]
      }
    • 其他選項保持默認

  4. 點擊 "保存" 完成配置

步驟 3:測試動態參數效果

  1. 進入剛才創建的任務

  2. 點擊 "Build with Parameters"

  3. 嘗試選擇不同的環境,觀察 "部署模塊" 的可選值變化:

    • 選擇 "開發環境" 時,會顯示包括"測試工具模塊"在內的4個選項

    • 選擇 "測試環境" 時,會顯示3個核心模塊

    • 選擇 "生產環境" 時,會顯示包括"監控模塊"在內的4個選項

五、高級用法

1. 從外部數據源獲取選項

你可以從文件、數據庫或API獲取選項列表,例如從文件讀取:

// 從文件讀取環境列表
def envFile = new File("/jenkins/config/environments.txt")
return envFile.readLines()

2. 級聯多個參數

可以創建多個響應式參數,形成參數鏈,例如:環境 → 服務 → 功能模塊

// 第三個參數:根據前兩個參數動態變化
if (environment == "生產環境" && service == "用戶服務") {return ["登錄功能", "注冊功能", "權限管理"]
} else {// 其他組合的選項...
}

3. 設置默認值

可以為參數設置默認值:

def options = ["開發環境", "測試環境", "生產環境"]
return [defaultValue: "測試環境",value: options
]

4.從api接口返回數據

1.配一個字符串參數,用于提供接口的入參

image-20250805143243786

2.添加Active Choices Reactive Parameter參數

image-20250805143542348

image-20250805143557408

import groovy.json.JsonSlurper
import java.net.URL
import java.net.HttpURLConnection
def orderType = ORDER1
def apiUrl = "http://wx.xxx.com/wx/search?content=${URLEncoder.encode(orderType, 'UTF-8')}"
try {// 創建HTTP連接URL url = new URL(apiUrl)HttpURLConnection connection = (HttpURLConnection) url.openConnection()connection.requestMethod = "GET"connection.connectTimeout = 50000  // 10秒連接超時connection.readTimeout = 50000 ? ? // 10秒讀取超時
?// 獲取響應碼int responseCode = connection.responseCodeif (responseCode == 200) {// 解析JSON響應def jsonSlurper = new JsonSlurper()def responseJson = jsonSlurper.parse(connection.inputStream)
?// 提取"熱門電影"數組(直接根據鍵名獲取,注意中文鍵名需完全匹配)def hotMovies = responseJson."getJuzi"  // 中文鍵名需用雙引號包裹并通過.訪問
?// 驗證數據格式if (hotMovies && hotMovies instanceof List) {// 過濾空值和空字符串,確保選項有效def movieOptions = hotMovies.findAll { it != null && it.toString().trim() != "" }.collect { it.toString() }  // 確保所有元素轉為字符串
?if (movieOptions) {return movieOptions  // 返回電影列表作為選項} else {return ["熱門電影列表為空"]}} else {return ["接口返回格式異常,未找到有效的'熱門電影'數組"]}} else {return ["接口請求失敗,狀態碼: ${responseCode}"]}
} catch (Exception e) {def errorMsg = e.message ?: "未知錯誤"return ["獲取熱門電影失敗: ${errorMsg.take(50)}"]  // 限制錯誤信息長度
}
?
?

3,查看效果

image-20250805143732784

image-20250805143758394

六、常見問題

  1. 參數不生效

    • 檢查參數名稱是否正確,特別是引用參數時

    • 確保腳本沒有語法錯誤

    • 檢查Jenkins日志尋找錯誤信息

  2. 選項沒有動態更新

    • 確保第二個參數類型是"Active Choices Reactive Parameter"

    • 確認"Referenced parameters"已正確設置

  3. 腳本權限問題

    • 如果腳本需要訪問文件系統,確保Jenkins運行用戶有相應權限

    • 對于復雜腳本,考慮使用Jenkins憑證存儲敏感信息

七、總結

Active Choices 插件為 Jenkins 提供了強大的動態參數功能,通過本文介紹的方法,你可以輕松實現根據一個參數的值動態控制另一個多選參數的選項。這在構建復雜的CI/CD流程時特別有用,能夠根據不同場景提供定制化的參數選項,提高構建效率和準確性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92139.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92139.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92139.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Matplotlib(六)- 坐標軸定制

文章目錄一、坐標軸概述1. 坐標軸介紹2. 坐標軸相關屬性二、坐標軸1. axes() 方法介紹2. 示例:添加多個繪圖區域三、坐標軸的刻度1. 坐標軸的刻度介紹2. 刻度定位器和格式器2.1 刻度定位器2.2 刻度格式器2.3 示例:刻度定位和格式3. 刻度樣式3.1 tick_par…

【物聯網】基于樹莓派的物聯網開發【22】——樹莓派獲取傳感器數據實時存儲實戰

場景介紹 今天程序貓帶領大家如何實時獲取樹莓派傳感器溫濕度數據,并自動存儲到數據庫中。確保數據的持續性。 實現過程 硬件連接 樹莓派4b連接GPIO引腳與DHT11傳感器; 硬件只涉及樹莓派、DHT11傳感器。 DHT11的信號引腳連接樹莓派的GPIO17, DHT11的Vdd&…

Linux DNS緩存與Nginx DNS緩存運維文檔

一、Linux DNS緩存機制與配置 1. Linux DNS緩存原理 Linux系統中的DNS緩存主要通過以下幾種方式實現: ?** nscd(Name Service Caching Daemon)**?:系統級緩存服務,可緩存DNS解析、主機名解析等信息?dnsmasq?:輕量級DNS轉發器和…

Java開發時出現的問題---并發與資源管理深層問題

Java 并發模型基于 JVM 內存模型(JMM),資源管理涉及 IO、線程、鎖等關鍵組件。若對并發語義、資源生命周期理解不透徹,易引發死鎖、內存泄漏、數據錯亂等嚴重問題。1. 并發三大特性(可見性、原子性、有序性&#xff09…

從「同步」到「異步」:用 aiohttp 把 Python 網絡 I/O 榨到極致

目錄 一、寫在前面:為什么 IO 是瓶頸 二、同步模型:requests 的憂傷 三、線程池:用并發掩蓋阻塞 四、aiohttp:讓「等待」非阻塞 4.1 安裝與版本約定 4.2 異步客戶端:asyncio aiohttp 4.3 錯誤處理與超時 4.4 …

MySQL 在麒麟系統上部署使用 + DBeaver 遠程連接 + SQL 數據導入完整流程

🚀 MySQL 在麒麟系統上部署使用 DBeaver 遠程連接 SQL 數據導入完整流程適用于國產操作系統(如:麒麟 / 統信 / Ubuntu)和 MySQL 8.0。包含遠程配置、授權連接、SQL 導入、DBeaver連接配置等常見問題解決方案。📦 環境…

C語言-指針初級(指針定義、指針的作用、指針的計算、野指針、懸空指針、void類型指針)

本章概述思維導圖:C語言指針指針是C語言中最強大但也最容易混淆的特性之一。它提供了直接操作內存地址的能力,使得C語言具有高效性和靈活性。下面我將詳細介紹C語言指針的各個方面。指針定義指針的本質:指針是一個變量,其值為另一…

具身智能VLA困于“數據泥潭”,人類活動視頻數據是否是“破局之鑰”?

前言盡管當前的視覺-語言-動作(VLA)模型已展現出顯著進展,但其在新場景和與復雜物體交互中的性能會顯著下降,在遵循指令方面落后于像LLaVA 這樣的大型多模態模型(LMM)。這種局限性源于現有VLA模型對存在固有…

CIO如何規劃企業BI分析指標體系 —— 從經營出發到績效管理

如果你是一家企業的CIO,要啟動一個商業智能BI項目,負責規劃整個項目的商業智能BI分析內容,你該如何入手準備?要有什么樣的思路。如果是管理層、老板還不能清晰認識到商業智能BI的價值,也提不出很清晰的需求&#xff0c…

go學習筆記:panic是什么含義

anic 是 Go 語言中的一種運行時錯誤處理機制,用于處理程序中的異常情況。 基本含義 panic 會: 立即停止當前函數的執行 開始執行 defer 函數(如果有的話) 向上傳播到調用棧,逐層執行 defer 如果到達 main 函數&am…

OpenLayers 入門指南【五】:Map 容器

文章目錄 一、Map 對象核心參數 1. target 2. view 3. layers 4. controls 5. interactions 6. 其他重要參數 二、Map 對象常用方法 1. 圖層管理 2. 控件管理 3. 交互管理 4. 視圖與坐標操作 5. 事件監聽 6. 覆蓋物管理 7. 其他 三、總結 上一章節中我們通過修改OlMap.vue組件已…

關稅戰火中的技術方舟:新西蘭證券交易所的破局之道 ——從15%關稅沖擊到跨塔斯曼結算聯盟,解碼下一代交易基礎設施

一、今日焦點:全球關稅震蕩與新西蘭的“技術自衛” 1. 特朗普關稅大限落地,新西蘭啟動緊急游說 2025年8月1日,美國總統特朗普正式簽署行政令,對貿易順差國征收最低15%基準關稅。新西蘭貿易部長緊急聲明:“將提出有力證…

windows內核研究(軟件調試-軟件斷點)

軟件調試軟件斷點調試的本質是什么?就是在被調試程序中觸發異常,然后被調試程序就會向_DEBUG_OBJECT結構體添加調試事件,這里我們調試器就接管這個異常了(調試的過程就是異常處理的過程) 軟件斷點 在x64dbg中通過快捷鍵…

HarmonyOS】鴻蒙應用開發中常用的三方庫介紹和使用示例

🌟 鴻蒙應用開發常用三方庫指南(2025 最新版)適用版本:HarmonyOS NEXT / API 12 參考來源:HarmonyOS 三方庫中心 截止至 2025 年 8 月 1 日,本文整理了當前社區中下載量高、穩定性強、生態完善的熱門三方庫…

【通識】C Sharp

1. 使用 \p{名稱}構造匹配Unicode常規類別(該示例為Pd或“標點、短劃線”類別)和命名塊(IsGreek和IsBsicLatin命名塊) using System; using system.Text.RegularExpressions; public class Example {public static void main() {s…

國內首個開源SCA社區——OpenSCA開源社區

OpenSCA開源社區成果說明項目背景智能時代,軟件定義一切。隨著開發模式的敏捷化轉型,開源代碼在軟件制品中的占比越來越大,開源軟件已然成為軟件供應鏈的重要組成部分。由于其特殊性,開源代碼的引入增加了軟件應用的風險面&#x…

超聚變:智能體時代,AI原生重構城企數智化基因

2025 世界人工智能大會(WAIC)世博展覽館內,超聚變展臺前人頭攢動,其展示的AI落地全棧解決方案及上百個AI應用場景吸引了眾多參觀者駐足觀看。這是今年WAIC大會火爆的一角,更是當下AI應用爆發的一個縮影。當人工智能發展…

Traccar:開源GPS追蹤系統的核心價值與技術全景

Traccar:開源GPS追蹤系統的核心價值與技術全景 —— 從設備兼容到企業級定位管理的開源實踐 一、項目定位:多場景定位管理的開源基石 Traccar是一個高擴展性的開源GPS追蹤平臺,支持全球超過200種通信協議與2000款GPS設備(包括車…

編程與數學 03-002 計算機網絡 20_計算機網絡課程實驗與實踐

編程與數學 03-002 計算機網絡 20_計算機網絡課程實驗與實踐一、實驗環境搭建(一)使用模擬器(如Cisco Packet Tracer)搭建網絡實驗環境(二)實驗設備的配置與連接二、基礎網絡實驗(一&#xff09…

15個命令上手Linux!

1、id,顯示當前登錄系統的用戶信息2、pwd,顯示當前工作目錄的絕對路徑3、ls,顯示當前目錄下的內容(ls -r:按反向順序列出內容,ls -l:以詳細列表形式顯示)4、cd,切換工作目…