情景描述
- 使用jenkins的分布式構(gòu)建
- 設(shè)置ubuntu分別作為jenkins master service以及slave service
- 使用java web start的方式進(jìn)行slave connect master
- 此時(shí)在ubunut的slave node上執(zhí)行
javaws http://localhost:8080/computer/mac_test/slave-agent.jnlp
(請求路徑?jīng)]問題) - 爆出錯(cuò)誤:
Java Web Start splash screen process exiting ….. vagrant@vagrant-ubuntu-trusty-64:/vagrant$ Splash: X11 connection failed: No such file or directory
問題解決
- Q1:錯(cuò)誤log是什么意思?為什么文件在請求路徑上驗(yàn)證過是存在的會(huì)報(bào)錯(cuò)是No such file or directory?
- A1:首先翻譯錯(cuò)誤log:java web start啟動(dòng)屏幕進(jìn)程終止了,x11鏈接失敗,找不到文件。
Q2:java web start是什么?我們到底又執(zhí)行了什么?
-
A2:之前使用jenkins的時(shí)候只知道jws只是一種connect master的方式,似乎理解完全錯(cuò)誤了。根據(jù)官網(wǎng)介紹:
Java Web Start 是一個(gè)軟件,使您可以從 Web 下載和運(yùn)行 Java 應(yīng)用程序。(第一次下載采用 Java Web Start 技術(shù)的 Java 應(yīng)用程序時(shí),Java Web Start 軟件會(huì)自動(dòng)啟動(dòng)。Java Web Start 軟件將整個(gè)應(yīng)用程序高速緩存(存儲(chǔ))到本地計(jì)算機(jī)上。)
- 提供一種單擊一次即可激活應(yīng)用程序的便捷方法
- 保證您始終運(yùn)行最新版本的應(yīng)用程序
(每次啟動(dòng)應(yīng)用程序時(shí),Java Web Start 軟件組件都會(huì)檢查應(yīng)用程序的 Web 站點(diǎn)以確定是否有新的版本) - 避免了復(fù)雜的安裝或升級(jí)過程
java web start原來是一個(gè)運(yùn)行app的軟件,也理解了我執(zhí)行的
javaws http://localhost:8080/computer/mac_test/slave-agent.jnlp
的意思:使用java web start軟件安裝并啟動(dòng)jnlp中的應(yīng)用程序。這個(gè)應(yīng)用程序所做的就是主動(dòng)connect master節(jié)點(diǎn)。
- Q3:那么我們?yōu)槭裁匆褂胘ava web start connect?
- A3:因?yàn)椋?
- 這種方式很方便,對于jenkins master只要在jenkins web上放上一個(gè)jnlp應(yīng)用程序,對于slave 只需要使用javaws運(yùn)行一下這個(gè)app就可以建立連接。
- 當(dāng)slave的數(shù)量變大,master通過ssh主動(dòng)connect的話需要記錄每service的IP和密碼很不方便,通過這種方式主機(jī)并不需要主動(dòng)去鏈接slave也
不需要知道其IP,slave主動(dòng)鏈接。
- Q4: 那么`Java Web Start 為什么會(huì)啟動(dòng)屏幕進(jìn)程,那么屏幕進(jìn)程為什么又會(huì)終止?
- A4:我在本地嘗試過javaws指令發(fā)現(xiàn)彈出了對話框讓我選擇是否要連接。因此可以明白,在這個(gè)jnlp的應(yīng)用程序中包含彈出GUI提示框的這一部分。那么之所以終止是因?yàn)関agrant box中并不提供可視化界面GUI。
Q5:那么x11是什么?是不是因?yàn)闆]有GUI造成not connect?
-
A5:補(bǔ)充知識(shí):
X11也叫做X Window系統(tǒng),X Window系統(tǒng) (X11或X)是一種 位圖 顯示的 視窗系統(tǒng) 。它是在 Unix 和 類Unix 操作系統(tǒng) ,以及 OpenVMS 上建立圖形用戶界面 的標(biāo)準(zhǔn)工具包和協(xié)議.X 僅為 GUI 環(huán)境構(gòu)建提供了基本的框架,在屏幕上繪圖和移動(dòng)窗口,以及與鼠標(biāo)和鍵盤交互.
根據(jù)以上知識(shí)可以明白:x11是用來建立GUI的,由于vagrant虛擬機(jī)不支持GUI那么肯定不會(huì)存在x11這個(gè)工具包,所以出現(xiàn)connect fail。
反思
- 一開始老師讓我使用java web start的方式。我沒有問為什么。在使用過程中我只關(guān)注how,而沒有關(guān)注what和why、when。how只是一條指令,就算我用了work了下次也不一定記得。以后也只會(huì)說上次我用connect jenkins slave用的是java web start我會(huì)用。但是我不懂為什么和是什么也許下一個(gè)場景并不適合使用。而只有明白了what和why、when者才會(huì)變成我自己的知識(shí)。
ACTION
- 以后使用到的任何新的技術(shù)方法,要求自己使用到就記錄下來,包括bug任何shell 語句,回來必須立刻將bug寫成每日總結(jié)新知識(shí)寫成3w和1h形式。