深入解析 Jenkins Agent 的 .jnlp 啟動文件

🧩 深入解析 Jenkins Agent 的 .jnlp 啟動文件

在 Jenkins 中,通過 JNLP(Java Network Launch Protocol)方式連接 Agent 是一種常見且靈活的方式。你可能曾見過類似這樣的命令:

java -jar agent.jar -jnlpUrl file:///users/sqi.io/jenkins-agent.jnlp -workDir "/users/sqi.io/jenkins"

但其中提到的 .jnlp 文件到底是做什么的?又包含了哪些關鍵內容?這篇文章將帶你全面了解 Jenkins Agent 的 .jnlp 文件結構及其作用。


🧾 什么是 .jnlp 文件?

.jnlp 是一個基于 XML 格式的配置文件,原生用于 Java Web Start 應用的啟動定義。在 Jenkins 中,它被用于定義 Agent 的啟動參數和通信設置。通過該文件,Agent 能夠遠程連接到 Jenkins 主服務器,并進行構建任務處理。


🔍 .jnlp 文件結構解析

以下是一個 Jenkins 生成的 .jnlp 文件示例(敏感信息已脫敏處理):

<jnlp codebase="http://<jenkins-host>:8080/computer/<agent-name>/" spec="1.0+"><information><title>Agent for <agent-name></title><vendor>Jenkins project</vendor><homepage href="https://jenkins-ci.org/"/></information><security><all-permissions/></security><resources><j2se version="1.8+"/><jar href="http://<jenkins-host>:8080/jnlpJars/remoting.jar"/></resources><application-desc main-class="hudson.remoting.jnlp.Main"><argument>[secret-key]</argument><argument><agent-name></argument><argument>-workDir</argument><argument>/Users/sqi.io/jenkins</argument><argument>-internalDir</argument><argument>remoting</argument><argument>-url</argument><argument>http://<jenkins-host>:8080/</argument></application-desc>
</jnlp>

🧱 結構詳細說明

區塊說明
<jnlp>指定資源加載的基礎路徑 (codebase) 與使用的規范版本 (spec)。
<information>提供描述信息,如標題、廠商和主頁。
<security>表示該 Agent 請求“所有權限”,即 Full Permission,用于執行構建時的各種系統操作。
<resources>指定所需的 Java 版本及所依賴的遠程 remoting.jar 文件。該 jar 是 Jenkins Master 和 Agent 通信的核心。
<application-desc>指定程序入口類和啟動參數。Jenkins Agent 的入口為 hudson.remoting.jnlp.Main

🚀 啟動參數說明

以下是 <application-desc> 內各參數的意義:

參數說明
[secret-key]認證用的 token,確保連接安全。敏感信息,切勿泄露
<agent-name>節點在 Jenkins 中的標識名,例如 mac-mini-jenkins-slave-001
-workDirAgent 的本地工作目錄,用于緩存構建文件。
-internalDir用于存放 Jenkins remoting 自身運行相關的內部數據。
-urlJenkins 主服務器地址。

? 等效命令行啟動方式

根據上面的 .jnlp 文件,你可以構造一個等效的命令行啟動方式:

java -jar agent.jar \-jnlpUrl http://<jenkins-host>:8080/computer/<agent-name>/slave-agent.jnlp \-secret [secret-key] \-workDir "/Users/sqi.io/jenkins"

📌 使用 -secret 和 HTTP 方式通常更方便,也是 Jenkins UI 推薦的方式。


🛡? 安全提示

  • .jnlp 文件中含有明文認證信息(如 secret key),切勿暴露在公網或版本控制系統中
  • 建議為每個 Agent 使用獨立的 token,便于權限管理和問題追蹤。
  • 使用 HTTPS 而不是 HTTP 能有效防止中間人攻擊。

🧠 Last

.jnlp 文件是 Jenkins Agent 與 Master 通信的橋梁,定義了連接參數和資源路徑。理解其結構不僅有助于你更好地管理 CI/CD 系統,也能在遇到連接問題時迅速定位根因。


如果你對 Jenkins Agent 啟動方式還有更多疑問,比如如何通過 Docker 或 SSH 啟動 Agent,也歡迎留言交流~

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

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

相關文章

定積分__

practice makes perfect 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 若被積函數在積分區間上是可積的&#xff0c;那么變限積分函數在這個區…

Three.js 系列專題 7:性能優化與最佳實踐

內容概述 隨著 3D 場景復雜度的增加,性能優化變得至關重要。Three.js 項目可能因幾何體數量、紋理大小或渲染設置而變慢。本專題將介紹減少 draw call、優化紋理和使用調試工具的最佳實踐。 學習目標 學會減少 draw call 和幾何體復雜度。掌握紋理壓縮與內存管理。使用 Stat…

CentOS 7安裝Python3.12

文章目錄 使用pyenv安裝python3.12一、gitub下載pyenv二、升級GCC三.升級openssl這樣python3.12.9就完成安裝在CentOS上啦&#xff01; 使用pyenv安裝python3.12 一、gitub下載pyenv https://github.com/pyenv/pyenv 按照README&#xff0c;pyenv教程安裝即可 二、升級GCC 安…

【C++】優先級隊列+反向迭代器

priority_queue的介紹 通常用堆來實現&#xff0c;能在O(log n)的時間復雜度內插入和提取最高&#xff08;或最低&#xff09;優先級的元素。 優先隊列是一種容器適配器&#xff0c;根據嚴格的弱排序標準&#xff0c;它的第一個元素總是它所包含的元素中最大的(默認情況)。此…

mysql鏡像創建docker容器,及其可能遇到的問題

前提&#xff0c;已經弄好基本的docker服務了。 一、基本流程 1、目錄準備 我自己的資料喜歡放在 /data 目錄下&#xff0c;所以老規矩&#xff1a; 先進入 /data 目錄&#xff1a; cd /data 創建 mysql 目錄&#xff1a; mkdir mysql 2、鏡像查找 docker search hub.ra…

快速記憶法,提高知識點背誦效率

戰國七雄&#xff1a;齊秦 韓趙魏 燕楚 諧音記憶&#xff1a;齊秦 喊趙薇 演出 五等爵位&#xff1a;公侯 伯子 男 記憶方法&#xff1a;公猴 脖子 藍 安卓應用&#xff1a;記憶宮殿APP 記憶 腦力訓練&#xff0c;中小學各學科知識點速記&#xff0c;單詞趣味記憶&#xff0c…

從零開始學java--泛型(1)

泛型 學生成績可能是數字類型&#xff0c;也可能是字符串類型&#xff0c;如何存放可能出現的兩種類型呢&#xff1a; public class Score {String name;String id;Object value; //因為Object是所有類型的父類&#xff0c;因此既可以存放Integer也能存放Stringpublic Score…

pdf轉latex

Doc2X&#xff08;https://doc2x.noedgeai.com/&#xff09; Doc2X 是一個由 NoEdgeAI 提供的在線工具&#xff0c;主要用于將 PDF 文件&#xff08;尤其是學術論文、報告等文檔&#xff09;轉換為 LaTeX 格式。LaTeX 是一種高質量排版系統&#xff0c;廣泛應用于學術界和出版…

Visual Studio 2022 UI機器學習訓練模塊

VS你還是太超標了&#xff0c;現在機器學習都不用寫代碼了嗎&#xff01;&#xff01; 右鍵項目解決方案&#xff0c;選擇機器學習模型

無公網實體服務器加裝多個操作系統供多個用戶互不打擾使用_part1

背景介紹 因筆者業務需求&#xff0c;入手了一個實體服務器&#xff0c;但為了避免出現在一個操作系統中搭建編程環境后有許多相關的進程和服務&#xff0c;拖慢日常的使用&#xff0c;也能讓其他人短期使用&#xff0c;更好的利用服務器的性能&#xff0c;讓服務器專注于“什…

運動規劃實戰案例 | 基于四叉樹分解的路徑規劃(附ROS C++/Python仿真)

目錄 1 為什么需要四叉樹&#xff1f;2 基于四叉樹的路徑規劃2.1 分層抽象2.2 路圖搜索2.3 動態剪枝 3 算法仿真3.1 ROS C算法仿真3.2 Python算法仿真 1 為什么需要四叉樹&#xff1f; 路徑規劃的本質是在給定環境中尋找從起點到終點的最優或可行路徑&#xff0c;其核心挑戰在…

docker快捷打包腳本(ai版)

直接進入主題&#xff1a; 用這個腳本前提是你本地可以拉鏡像倉庫的鏡像&#xff0c;并且在 本地有了&#xff0c;然后將所有的鏡像tag寫在一個文件中&#xff0c;和下面docker_tags.txt 對應&#xff0c;文件叫什么&#xff0c;腳本里對應改什么&#xff0c;給小白說的 #!/bi…

WinMerge下載及使用教程(附安裝包)

文章目錄 一、WinMerge安裝步驟1.WinMerge下載&#xff1a;2.解壓&#xff1a;3.啟動&#xff1a; 二、WinMerge使用步驟1.添加文件或文件夾2.查看差異3.格式選擇 WinMerge v2.16.36 是一款免費開源的文件與文件夾比較、合并工具&#xff0c;能幫您快速找出差異&#xff0c;提高…

Jmeter性能測試之生成測試報告

結構 測試計劃 測試計劃是頂級的層級?錄的結構&#xff0c; 那么在這樣的?錄結構中&#xff0c;??可以包含很多線程組 線程組 線程組我們可以簡單的理解為postman測試?具??的collection&#xff0c;那么在整體線程組??&#xff0c;可以添加很多的測試 ?例 簡單控…

CSS中的inline-flex與flex的區別

在CSS中&#xff0c;flex 和 inline-flex 都是用于實現彈性布局&#xff08;Flexbox&#xff09;的顯示屬性&#xff0c;但它們在布局行為上有所不同。 flex 屬性會使元素表現為塊級彈性容器&#xff0c;這意味著元素會在頁面上占據一整行的空間&#xff0c;無論其內部內容的大…

Linux的那些基礎常用命令匯總

目錄 前言&#xff1a; 用戶命令&#xff1a; 管理后臺作業命令&#xff1a; 文件目錄操作命令&#xff1a; 運維高頻使用命令&#xff1a; 磁盤管理以及文件系統命令: 用戶、組操作命令&#xff1a; 權限控制命令&#xff1a; 網絡配置命令&#xff1a; 軟件管理命令…

高效深度學習lecture03

lecture_03 **剪枝&#xff1a;**pruning basically turns a dense neural network into a sparse neural network. you can remove those redundant synapses, and also you can remove those redundant neurons. 剪枝的本質上是將稠密的神經網絡轉變成稀疏的神經網絡&#…

Nextjs15 實戰 - React Notes 項目初始化

current branch 對應如下文檔 redis ioredis 本專欄內容均可在Github&#xff1a;notes_01 找到 一、效果 完整項目使用技術棧&#xff1a; Nextjs15 MySQL Redis Auth Prisma i18n strapi Docker vercel 二、修改根布局和其他頁面 修改 app/page.tsx&#xff1a…

Flutter PopupMenuButton 深度解析:從入門到架構級實戰

在移動應用交互設計中&#xff0c;上下文菜單如同隱形的魔法師&#xff0c;在有限屏幕空間中優雅地擴展操作維度。作為Flutter框架中的核心交互組件&#xff0c;PopupMenuButton絕非簡單的菜單觸發器&#xff0c;其背后蘊含著Material Design的交互哲學、聲明式UI的架構智慧以及…

C++——清明

#include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector> #include <memory> #include <ctime>using namespace std;class Weapon; // 前置聲明class Hero{ pr…