本公開涉及計算機軟件技術(shù)領(lǐng)域,具體而言,涉及一種Jenkins節(jié)點狀態(tài)管理方法以及一種Jenkins節(jié)點狀態(tài)管理裝置。
背景技術(shù):
Jenkins是基于Java開發(fā)的一種持續(xù)集成工具,可以用來提供一個開放易用的軟件平臺,使得軟件的持續(xù)集成變成可能。Jenkins中可以包括Master(主節(jié)點,提供Web接口讓用戶來管理Job的平臺)和Slave(從節(jié)點,分布式構(gòu)建中配置的節(jié)點)。
目前,在查看Slave的連接狀態(tài)時,可以先登錄Jenkins的網(wǎng)站,然后再選擇指定的Slave去查看;當(dāng)發(fā)現(xiàn)Slave處于斷開連接狀態(tài)時,首先需要判斷該斷開的Slave是否需要重新連接;若需要重新連接,則需要根據(jù)Slave部署方式的不同,再登錄Slave客戶端去執(zhí)行特定的Java命令才能重新連接。目前,Jenkins的Master(主節(jié)點)和Slave(從節(jié)點)的連接方式通??梢苑譃槿缦聝煞N。其中:
第一種連接方式可以包括:Master通過SSH連接Slave;在這種連接方式中,Master必須有Slave機器的賬號,可以將Master上生成的公鑰配置在Slave機器上。
第二種連接方式可以包括:Slave通過JNLP(Java提供的一種可以通過瀏覽器直接執(zhí)行Java應(yīng)用程序的途徑,可以直接通過一個網(wǎng)頁上的URL連接打開一個Java應(yīng)用程序)方式主動連接Master,在這種連接方式中,Master登錄到Slave機器上后,可以運行Master提供的Java–jar命令然后將Slave連接到Master上。
但是上述連接方式存在如下缺點:第一,Slave連接狀態(tài)查看步驟繁瑣。在登錄Jenkins網(wǎng)站時,需要用戶使用較高權(quán)限的賬戶才能登錄,因此登錄非常的不便;并且,Jenkins配置了許多的Slave,要從中找到目標(biāo)Slave去查看其狀態(tài),需要耗費大量的時間成本;第二,Slave斷線重連限制較多,需要有Jenkins的較高權(quán)限賬戶和Slave的用戶名密碼才能連接;但是一般的用戶并沒有這些權(quán)限,因此連接起來也非常的不便。
需要說明的是,在上述背景技術(shù)部分公開的信息僅用于加強對本公開的背景的理解,因此可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。
技術(shù)實現(xiàn)要素:
本公開的目的在于提供一種Jenkins節(jié)點狀態(tài)管理方法以及一種Jenkins節(jié)點狀態(tài)管理裝置,進(jìn)而至少在一定程度上克服由于相關(guān)技術(shù)的限制和缺陷而導(dǎo)致的一個或者多個問題。
根據(jù)本公開的一個方面,提供一種Jenkins節(jié)點狀態(tài)管理方法,Jenkins從節(jié)點上配置有一查詢腳本;所述方法包括:
通過一服務(wù)器接收一前端模塊發(fā)送的查詢所述Jenkins從節(jié)點狀態(tài)的查詢請求;
響應(yīng)所述查詢請求,建立所述服務(wù)器與所述Jenkins從節(jié)點間的通信;
通過所述服務(wù)器控制所述Jenkins從節(jié)點上配置的所述查詢腳本以查詢是否存在Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程;
當(dāng)查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時,確定所述Jenkins從節(jié)點處于連接狀態(tài);
當(dāng)未查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時,確定所述Jenkins從節(jié)點處于斷開狀態(tài)。
在本公開的一種示例性實施例中,Jenkins從節(jié)點上配置有一連接腳本;其中,在所述當(dāng)未查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時后還包括:
通過一服務(wù)器接收一前端模塊發(fā)送的連接所述Jenkins從節(jié)點狀態(tài)的連接請求;
響應(yīng)所述連接請求,建立所述服務(wù)器與所述Jenkins從節(jié)點間的通信;
通過所述服務(wù)器控制所述Jenkins從節(jié)點上配置的所述連接腳本以啟動所述Jenkins主節(jié)點與所述Jenkins從節(jié)點間的所述連接進(jìn)程。
在本公開的一種示例性實施例中,所述Jenkins節(jié)點狀態(tài)管理方法還包括:
判斷所述連接進(jìn)程是否啟動成功;以及
在判斷所述連接進(jìn)程成功啟動時,確定所述Jenkins從節(jié)點處于連接狀態(tài)并將連接結(jié)果發(fā)送給所述前端模塊。
在本公開的一種示例性實施例中,所述Jenkins節(jié)點狀態(tài)管理方法還包括:
生成一包括系統(tǒng)公鑰以及系統(tǒng)私鑰的密鑰對并將所述系統(tǒng)公鑰配置到與所述Jenkins從節(jié)點關(guān)聯(lián)的用戶端目錄文件中;
當(dāng)響應(yīng)所述查詢請求時,所述服務(wù)器通過所述系統(tǒng)私鑰對所述查詢請求進(jìn)程進(jìn)行驗證;
在所述查詢請求進(jìn)程通過驗證時,通過安全外殼協(xié)議建立所述Jenkins從節(jié)點與所述服務(wù)器間的通信。
在本公開的一種示例性實施例中,所述服務(wù)器是基于Flask實現(xiàn)的輕量級Web服務(wù)器。
根據(jù)本公開的一個方面,提供一種Jenkins節(jié)點狀態(tài)管理裝置,Jenkins從節(jié)點上配置有一查詢腳本;所述裝置包括:
狀態(tài)查詢請求模塊:用于通過一服務(wù)器接收一前端模塊發(fā)送的查詢所述Jenkins從節(jié)點狀態(tài)的查詢請求;
第一通信建立模塊:用于響應(yīng)所述查詢請求,建立所述服務(wù)器與所述Jenkins從節(jié)點間的通信;
連接進(jìn)程查詢模塊:用于通過所述服務(wù)器控制所述Jenkins從節(jié)點上配置的所述查詢腳本以查詢是否存在Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程;
連接狀態(tài)確定模塊:用于當(dāng)查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時,確定所述Jenkins從節(jié)點處于連接狀態(tài);
斷開狀態(tài)確定模塊:用于當(dāng)未查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時,確定所述Jenkins從節(jié)點處于斷開狀態(tài)。
在本公開的一種示例性實施例中,Jenkins從節(jié)點上配置有一連接腳本;其中,在所述當(dāng)未查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時后還包括:
通過一服務(wù)器接收一前端模塊發(fā)送的連接所述Jenkins從節(jié)點狀態(tài)的連接請求;
響應(yīng)所述連接請求,建立所述服務(wù)器與所述Jenkins從節(jié)點間的通信;
通過所述服務(wù)器控制所述Jenkins從節(jié)點上配置的所述連接腳本以啟動所述Jenkins主節(jié)點與所述Jenkins從節(jié)點間的所述連接進(jìn)程。
在本公開的一種示例性實施例中,所述Jenkins節(jié)點狀態(tài)管理裝置還包括:
連接進(jìn)程判斷模塊:用于判斷所述連接進(jìn)程是否啟動成功;
連接結(jié)果發(fā)送模塊:用于在判斷所述連接進(jìn)程成功啟動時,確定所述Jenkins從節(jié)點處于連接狀態(tài)并將連接結(jié)果發(fā)送給所述前端模塊。
在本公開的一種示例性實施例中,所述Jenkins節(jié)點狀態(tài)管理裝置還包括:
密鑰生成模塊:用于生成一包括系統(tǒng)公鑰以及系統(tǒng)私鑰的密鑰對并將所述系統(tǒng)公鑰配置到與所述Jenkins從節(jié)點關(guān)聯(lián)的用戶端目錄文件中;
進(jìn)程驗證模塊:用于當(dāng)響應(yīng)所述查詢請求時,所述服務(wù)器通過所述系統(tǒng)私鑰對所述查詢請求進(jìn)程進(jìn)行驗證;
第二通信建立模塊:用于在所述查詢請求進(jìn)程通過驗證時,通過安全外殼協(xié)議建立所述Jenkins從節(jié)點與所述服務(wù)器間的通信。
在本公開的一種示例性實施例中,所述服務(wù)器是基于Flask實現(xiàn)的輕量級Web服務(wù)器。
本公開一種Jenkins節(jié)點狀態(tài)管理方法及裝置,通過為Jenkins從節(jié)點配置一查詢腳本,當(dāng)需要查詢Jenkins從節(jié)點狀態(tài)時,先建立服務(wù)器與Jenkins從節(jié)點間的通信,然后通過服務(wù)器控制Jenkins從節(jié)點上配置的查詢腳本以查詢是否存在Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程,進(jìn)而判斷Jenkins主節(jié)點是否處于連接狀態(tài);一方面,通過為Jenkins從節(jié)點配置查詢腳本,當(dāng)需要查詢Jenkins從節(jié)點的當(dāng)前連接狀態(tài)時,可以直接通過服務(wù)器控制Jenkins從節(jié)點上配置的查詢腳本進(jìn)行查詢,解決現(xiàn)有技術(shù)方案中需要先登錄Jenkins的網(wǎng)站,然后再選擇指定的節(jié)點去查看的問題,簡化了查詢步驟,節(jié)省了時間成本;另一方面,不再需要獲取登錄Jenkins網(wǎng)站的最高權(quán)限就可以查詢Jenkins從節(jié)點的連接狀態(tài),降低了查詢的繁瑣程度,提高了查詢速度。
本公開一種Jenkins節(jié)點狀態(tài)管理方法及裝置,通過為Jenkins從節(jié)點配置一連接腳本,當(dāng)Jenkins節(jié)點處于斷開狀態(tài)時,可以通過服務(wù)器控制Jenkins從節(jié)點上配置的連接腳本執(zhí)行連接進(jìn)程,進(jìn)而可以遠(yuǎn)程連接Jenkins從節(jié)點,節(jié)省了技術(shù)人員的人力成本和時間成本,同時也提高了連接效率。
本公開一種Jenkins節(jié)點狀態(tài)管理方法及裝置,通過生成密鑰對并將密鑰對中的系統(tǒng)公鑰配置到與Jenkins從節(jié)點關(guān)聯(lián)的用戶端目錄文件中;當(dāng)服務(wù)器響應(yīng)查詢請求時,先通過密鑰對中的系統(tǒng)私鑰對查詢請求進(jìn)程進(jìn)行驗證,驗證通過后再進(jìn)行查詢,提高了系統(tǒng)的安全性,同時也提升了用戶體驗。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。顯而易見地,下面描述中的附圖僅僅是本公開的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示意性示出一種Jenkins節(jié)點狀態(tài)管理方法的流程圖。
圖2示意性示出另一種Jenkins節(jié)點狀態(tài)管理方法的流程圖。
圖3示意性示出另一種Jenkins節(jié)點狀態(tài)管理方法的流程圖。
圖4示意性示出另一種Jenkins節(jié)點狀態(tài)管理方法的流程圖。
圖5示意性示出一種Jenkins節(jié)點狀態(tài)管理裝置的框圖。
具體實施方式
現(xiàn)在將參考附圖更全面地描述示例實施方式。然而,示例實施方式能夠以多種形式實施,且不應(yīng)被理解為限于在此闡述的范例;相反,提供這些實施方式使得本公開將更加全面和完整,并將示例實施方式的構(gòu)思全面地傳達(dá)給本領(lǐng)域的技術(shù)人員。所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實施方式中。在下面的描述中,提供許多具體細(xì)節(jié)從而給出對本公開的實施方式的充分理解。然而,本領(lǐng)域技術(shù)人員將意識到,可以實踐本公開的技術(shù)方案而省略所述特定細(xì)節(jié)中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細(xì)示出或描述公知技術(shù)方案以避免喧賓奪主而使得本公開的各方面變得模糊。
此外,附圖僅為本公開的示意性圖解,并非一定是按比例繪制。圖中相同的附圖標(biāo)記表示相同或類似的部分,因而將省略對它們的重復(fù)描述。附圖中所示的一些方框圖是功能實體,不一定必須與物理或邏輯上獨立的實體相對應(yīng)??梢圆捎密浖问絹韺崿F(xiàn)這些功能實體,或在一個或多個硬件模塊或集成電路中實現(xiàn)這些功能實體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實現(xiàn)這些功能實體。
本示例實施方式中首先提供了一種Jenkins節(jié)點狀態(tài)管理方法,其中,Jenkins從節(jié)點上配置有一查詢腳本。參考圖1所示,該Jenkins節(jié)點狀態(tài)管理方法可以包括如下步驟:
步驟S110.通過一服務(wù)器接收一前端模塊發(fā)送的查詢所述Jenkins從節(jié)點狀態(tài)的查詢請求。
步驟S120.響應(yīng)所述查詢請求,建立所述服務(wù)器與所述Jenkins從節(jié)點間的通信。
步驟S130.通過所述服務(wù)器控制所述Jenkins從節(jié)點上配置的所述查詢腳本以查詢是否存在Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程。
步驟S140.當(dāng)查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時,確定所述Jenkins從節(jié)點處于連接狀態(tài)。
步驟S150.當(dāng)未查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時,確定所述Jenkins從節(jié)點處于斷開狀態(tài)。
上述Jenkins節(jié)點狀態(tài)管理方法中,一方面,通過為Jenkins從節(jié)點配置查詢腳本,當(dāng)需要查詢Jenkins從節(jié)點的當(dāng)前連接狀態(tài)時,可以直接通過服務(wù)器控制Jenkins從節(jié)點上配置的查詢腳本進(jìn)行查詢,解決現(xiàn)有技術(shù)方案中需要先登錄Jenkins的網(wǎng)站,然后再選擇指定的節(jié)點去查看的問題,簡化了查詢步驟,節(jié)省了時間成本;另一方面,不再需要獲取登錄Jenkins網(wǎng)站的最高權(quán)限就可以查詢Jenkins從節(jié)點的連接狀態(tài),降低了查詢的繁瑣程度,提高了查詢速度。
下面,將對本示例實施方式中上述Jenkins節(jié)點狀態(tài)管理方法的各步驟進(jìn)行詳細(xì)的說明。
在步驟S110中,通過一服務(wù)器接收一前端模塊發(fā)送的查詢所述Jenkins從節(jié)點狀態(tài)的查詢請求。
在本示例實施方式中,上述服務(wù)器可以包括基于Flask實現(xiàn)的輕量級Web服務(wù)器,也可以包括Internet信息服務(wù)器或者Ngnix服務(wù)器等等,本示例實施方式對此不作特殊限制;其中,F(xiàn)lask是一種使用Python編寫的輕量級Web框架;Flask也可以被稱為“Microframework”,因為它使用簡單的核心,用extension增加其他功能。在本示例中,通過服務(wù)器(Flask)接收前端模塊(前端頁面)發(fā)送的查詢Jenkins從節(jié)點(Slave)狀態(tài)的查詢請求,該查詢請求可以通過AJAX(Asynchronous Javascript And XML,異步JavaScript和XML)方式進(jìn)行發(fā)送。此外,在本公開的其他示例性實施例中,也可以根據(jù)實際情況以其他的方式發(fā)送上述查詢請求,本示例性實施例中對此不做特殊限定。
在步驟S120中,響應(yīng)所述查詢請求,建立所述服務(wù)器與所述Jenkins從節(jié)點間的通信。
在本示例實施方式中,響應(yīng)上述查詢Jenkins從節(jié)點(Slave)狀態(tài)的查詢請求,然后建立服務(wù)器(Flask)與Jenkins從節(jié)點(Slave)間的通信;服務(wù)器(Flask)與Jenkins從節(jié)點(Slave)間的通信可以通過安全外殼協(xié)議(SSH,Secure Shell)進(jìn)行建立,也可通過TCP/IP或者Socket進(jìn)行建立,本示例實施方式對此不做特殊限制。
在步驟S130中,通過所述服務(wù)器控制所述Jenkins從節(jié)點上配置的所述查詢腳本以查詢是否存在Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程。
在本示例實施方式中,上述查詢腳本可以是使用一種特定的描述性語言(例如,可以是Java)并依據(jù)一定的格式編寫的可執(zhí)行文件(可供Flask查詢Slave的當(dāng)前連接狀態(tài)),也可以根據(jù)實際情況進(jìn)行其他的定義,例如可以是文字命令等等,本示例對此不作特殊限制。在本示例中,通過Flask控制Slave上配置的查詢腳本來查詢Jenkins主節(jié)點(Master)與Jenkins從節(jié)點(Slave)間是否存在連接進(jìn)程并根據(jù)連接進(jìn)程的存在與否來判斷Jenkins從節(jié)點(Slave)的當(dāng)前狀態(tài)。其中,進(jìn)程是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ),是程序的基本執(zhí)行實體;上述連接進(jìn)程可以被理解為連接Master與Slave的程序的基本執(zhí)行實體。查詢的具體執(zhí)行代碼例如可以如下所示:
在步驟S140中,當(dāng)查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時,確定所述Jenkins從節(jié)點處于連接狀態(tài)。舉例而言:
當(dāng)查詢到Master與Slave的連接進(jìn)程時,則可以確定Slave與Master處于連接狀態(tài)。
在步驟S150中,當(dāng)未查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時,確定所述Jenkins從節(jié)點處于斷開狀態(tài)。舉例而言:
當(dāng)未查詢到Master與Slave的連接進(jìn)程時,則可以確定Slave與Master處于斷開狀態(tài)。
在本示例實施例的另一種實施方式中,當(dāng)未查詢到Master與Slave的連接進(jìn)程時,確定Slave與Master處于斷開狀態(tài),則可以對Slave重新連接。其中,Slave上配置有一連接腳本,參考圖2所示,對Slave重新連接可以包括步驟S210~S230。其中:
在步驟S210中,通過一服務(wù)器接收一前端模塊發(fā)送的連接所述Jenkins從節(jié)點狀態(tài)的連接請求。詳細(xì)而言:
通過服務(wù)器(Flask)接收前端模塊(前端頁面)發(fā)送的連接Jenkins從節(jié)點(Slave)狀態(tài)的連接請求,該連接請求可以通過AJAX(Asynchronous Javascript And XML,異步JavaScript和XML)方式進(jìn)行發(fā)送。
在步驟S220中,響應(yīng)所述連接請求,建立所述服務(wù)器與所述Jenkins從節(jié)點間的通信。
在本示例實施方式中,響應(yīng)上述連接Jenkins從節(jié)點(Slave)狀態(tài)的連接請求,然后建立服務(wù)器(Flask)與Jenkins從節(jié)點(Slave)間的通信;服務(wù)器(Flask)與Jenkins從節(jié)點(Slave)間的通信可以通過安全外殼協(xié)議(SSH)進(jìn)行建立,也可通過TCP/IP協(xié)議或者Socket協(xié)議進(jìn)行建立,本示例實施方式對此不做特殊限制。
在步驟S230中,通過所述服務(wù)器控制所述Jenkins從節(jié)點上配置的所述連接腳本以啟動所述Jenkins主節(jié)點與所述Jenkins從節(jié)點間的所述連接進(jìn)程。
在本示例實施方式中,上述連接腳本可以是使用一種特定的描述性語言(可以是Java)并依據(jù)一定的格式編寫的可執(zhí)行文件(可供Flask啟動與Slave間的連接進(jìn)程),也可以根據(jù)實際情況進(jìn)行其他的定義,例如可以是文字命令等等,本示例對此不作特殊限制。在本示例中,通過Flask控制Slave上配置的連接腳本來啟動Jenkins主節(jié)點(Master)與Jenkins從節(jié)點(Slave)間的連接進(jìn)程。
在本示例的另一種實施方式中,還提供了另一種Jenkins節(jié)點狀態(tài)管理方法。參考圖3所示,該Jenkins節(jié)點狀態(tài)管理方法還可以包括步驟S320以及步驟S320。其中:
在步驟S310中,判斷所述連接進(jìn)程是否啟動成功。詳細(xì)而言:
可以根據(jù)與Slave關(guān)聯(lián)的用戶終端的所有進(jìn)程列表中是否存在上述連接進(jìn)程來判斷上述連接進(jìn)程是否啟動成功;其中,可以通過Python的Paramiko模塊使用秘鑰認(rèn)證登錄Slave客戶端,然后執(zhí)行ps aux|grep java命令查看用戶終端的所有java進(jìn)程,然后在這些進(jìn)程中查看當(dāng)前連接進(jìn)程是否存在。此外,在本公開的其他示例性實施例中,也可以根據(jù)實際情況以其他的方式判斷連接進(jìn)程是否啟動成功,本示例性實施例中對此不做特殊限定。
在步驟S320中,在判斷所述連接進(jìn)程成功啟動時,確定所述Jenkins從節(jié)點處于連接狀態(tài)并將連接結(jié)果發(fā)送給所述前端模塊。詳細(xì)而言:
當(dāng)與Slave關(guān)聯(lián)的用戶終端的進(jìn)程列表中存在上述連接進(jìn)程時,則可以確定Slave處于連接狀態(tài)然后將連接結(jié)果發(fā)送給前端頁面;當(dāng)與Slave關(guān)聯(lián)的用戶終端的進(jìn)程列表中不存在上述連接進(jìn)程時,則可以確定Slave繼續(xù)處于斷開狀態(tài),可以將此情況以日志的形式反饋給技術(shù)人員,并通過技術(shù)人員完成對Slave的連接。上述重新連接的具體執(zhí)行代碼可以參考如下所示:
本示例實施方式還提供了另一種Jenkins節(jié)點狀態(tài)管理方法。參考圖4所示,該Jenkins節(jié)點狀態(tài)管理方法還可以包括步驟S410~步驟S430。其中:
在步驟S410中,生成一包括系統(tǒng)公鑰以及系統(tǒng)私鑰的密鑰對并將所述系統(tǒng)公鑰配置到與所述Jenkins從節(jié)點關(guān)聯(lián)的用戶端目錄文件中。
在本示例實施方式中,上述密鑰對是通過一種算法得到的一個密鑰對,例如可以是ssh-keygen-t rsa,也可以是ssh-keysystem-t rsa或者ssh-keymaster-t rsa等等,本示例對此不作特殊限制;其中,系統(tǒng)公鑰是密鑰對中公開的部分;系統(tǒng)私鑰則是非公開的部分,可以用于遠(yuǎn)程登錄。在本示例中,生成上述密鑰對后,將將生成的公鑰文件(例如可以是id_rsa.pub)中內(nèi)容加到與Slave關(guān)聯(lián)的用戶端的任一用戶目錄文件(例如可以是authorized_keys)中,從而獲得遠(yuǎn)程密鑰登錄slave的權(quán)限。
在步驟S420中,當(dāng)響應(yīng)所述查詢請求時,所述服務(wù)器通過所述系統(tǒng)私鑰對所述查詢請求進(jìn)程進(jìn)行驗證。
在本示例實施方式中,為了保證上述查詢請求是合法的,當(dāng)響應(yīng)上述查詢請求時,F(xiàn)lask首先通過上述系統(tǒng)私鑰對該查詢請求的合法性進(jìn)行驗證。此外,在本公開的其他示例性實施例中,也可以根據(jù)實際情況以其他的方式對查詢請求的合法性進(jìn)行驗證,本示例性實施例中對此不做特殊限定。進(jìn)一步的:
為了保證上述連接請求的合法性,當(dāng)響應(yīng)上述連接請求時,F(xiàn)lask也可以先通過上述系統(tǒng)私鑰對該連接請求的合法性進(jìn)行驗證。
在步驟S430中,在所述查詢請求進(jìn)程通過驗證時,通過安全外殼協(xié)議建立所述Jenkins從節(jié)點與所述服務(wù)器間的通信。
在本示例實施方式中,上述安全外殼協(xié)議(SSH,Secure Shell)是一種在不安全網(wǎng)絡(luò)上提供安全遠(yuǎn)程登錄及其它安全網(wǎng)絡(luò)服務(wù)的協(xié)議;利用SSH協(xié)議可以有效防止遠(yuǎn)程管理過程中的信息泄露問題并且可以彌補網(wǎng)絡(luò)中的漏洞。SSH可以提供基于口令的安全驗證,也可以提供基于密鑰的驗證。在本示例中,為了進(jìn)一步提高通信的安全性,當(dāng)上述查詢請求進(jìn)程通過驗證時,通過安全外殼協(xié)議建立Slave與Flask之間的通信。此外,在本公開的其他示例性實施例中,也可以根據(jù)實際情況通過其他的協(xié)議建立Slave與Flask之間的通信,例如可以是TCP/IP或者HTTP等等,本示例性實施例中對此不做特殊限定。
進(jìn)一步的,當(dāng)上述通信建立完成以后,通過Flask控制Slave上配置的所述查詢腳本以查詢是否存在Master與所述Slave的連接進(jìn)程。具體查詢過程的執(zhí)行代碼可以參考如下所示:
private_key=paramiko.RSAKey.from_private_key_file(private_key_path)
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip,port=port,username=username,pkey=private_key,timeout=1)
stdin,stdout,stderr=ssh.exec_command('ps aux|grep java')
result=stdout.read()
此外,盡管在附圖中以特定順序描述了本公開中方法的各個步驟,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些步驟,或是必須執(zhí)行全部所示的步驟才能實現(xiàn)期望的結(jié)果。附加的或備選的,可以省略某些步驟,將多個步驟合并為一個步驟執(zhí)行,以及/或者將一個步驟分解為多個步驟執(zhí)行等。
本示例實施方式還提供了一種Jenkins節(jié)點狀態(tài)管理裝置,其中,Jenkins從節(jié)點上配置有一查詢腳本。參考圖5所示,該Jenkins節(jié)點狀態(tài)管理裝置可以包括狀態(tài)查詢請求模塊510、第一通信建立模塊520、連接進(jìn)程查詢模塊530、連接狀態(tài)確定模塊540以及斷開狀態(tài)確定模塊550。其中:
狀態(tài)查詢請求模塊510可以用于通過一服務(wù)器接收一前端模塊發(fā)送的查詢所述Jenkins從節(jié)點狀態(tài)的查詢請求。
第一通信建立模塊520可以用于響應(yīng)所述查詢請求,建立所述服務(wù)器與所述Jenkins從節(jié)點間的通信。
連接進(jìn)程查詢模塊530可以用于通過所述服務(wù)器控制所述Jenkins從節(jié)點上配置的所述查詢腳本以查詢是否存在Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程。
連接狀態(tài)確定模塊540可以用于當(dāng)查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時,確定所述Jenkins從節(jié)點處于連接狀態(tài)。
斷開狀態(tài)確定模塊550可以用于當(dāng)未查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時,確定所述Jenkins從節(jié)點處于斷開狀態(tài)。
本示例實施方式還提供了另一種Jenkins節(jié)點狀態(tài)管理裝置,Jenkins從節(jié)點上配置有一連接腳本;其中,在所述當(dāng)未查詢到所述Jenkins主節(jié)點與所述Jenkins從節(jié)點的連接進(jìn)程時后還包括:
通過一服務(wù)器接收一前端模塊發(fā)送的連接所述Jenkins從節(jié)點狀態(tài)的連接請求;響應(yīng)所述連接請求,建立所述服務(wù)器與所述Jenkins從節(jié)點間的通信;通過所述服務(wù)器控制所述Jenkins從節(jié)點上配置的所述連接腳本以啟動所述Jenkins主節(jié)點與所述Jenkins從節(jié)點間的所述連接進(jìn)程。
在本示例實施方式中,所述Jenkins節(jié)點狀態(tài)管理裝置還包括:
連接進(jìn)程判斷模塊可以用于判斷所述連接進(jìn)程是否啟動成功。
連接結(jié)果發(fā)送模塊可以用于在判斷所述連接進(jìn)程成功啟動時,確定所述Jenkins從節(jié)點處于連接狀態(tài)并將連接結(jié)果發(fā)送給所述前端模塊。
在本示例實施方式中,所述Jenkins節(jié)點狀態(tài)管理裝置還包括:
密鑰生成模塊可以用于生成一包括系統(tǒng)公鑰以及系統(tǒng)私鑰的密鑰對并將所述系統(tǒng)公鑰配置到與所述Jenkins從節(jié)點關(guān)聯(lián)的用戶端目錄文件中。
進(jìn)程驗證模塊可以用于當(dāng)響應(yīng)所述查詢請求時,所述服務(wù)器通過所述系統(tǒng)私鑰對所述查詢請求進(jìn)程進(jìn)行驗證。
第二通信建立模塊可以用于在所述查詢請求進(jìn)程通過驗證時,通過安全外殼協(xié)議建立所述Jenkins從節(jié)點與所述服務(wù)器間的通信。
在本示例實施方式中,所述服務(wù)器是基于Flask實現(xiàn)的輕量級Web服務(wù)器。
上述Jenkins節(jié)點狀態(tài)管理裝置中各模塊的具體細(xì)節(jié)已經(jīng)在對應(yīng)的Jenkins節(jié)點狀態(tài)管理方法中進(jìn)行了詳細(xì)想描述,因此此處不再贅述。
應(yīng)當(dāng)注意,盡管在上文詳細(xì)描述中提及了用于動作執(zhí)行的設(shè)備的若干模塊或者單元,但是這種劃分并非強制性的。實際上,根據(jù)本公開的實施方式,上文描述的兩個或更多模塊或者單元的特征和功能可以在一個模塊或者單元中具體化。反之,上文描述的一個模塊或者單元的特征和功能可以進(jìn)一步劃分為由多個模塊或者單元來具體化。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實施方式可以通過軟件實現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實現(xiàn)。因此,根據(jù)本公開實施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是CD-ROM,U盤,移動硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計算設(shè)備(可以是個人計算機、服務(wù)器、移動終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實施方式的方法。
本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由所附的權(quán)利要求指出。