qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          Jenkins實(shí)戰(zhàn)演練之Linux節(jié)點(diǎn)任務(wù)配置

          現(xiàn)在我們已經(jīng)搭建好了基本的Jenkins環(huán)境,在這一集里,我們說(shuō)一說(shuō)如何管理節(jié)點(diǎn)。 
          進(jìn)入“系統(tǒng)管理”中的“管理節(jié)點(diǎn)”。 

           

          創(chuàng)建Windos系統(tǒng)的奴隸節(jié)點(diǎn) 

          先創(chuàng)建一臺(tái)安裝了Win7系統(tǒng)的虛擬機(jī),作為Jenkins構(gòu)建的奴隸節(jié)點(diǎn)。比如我這臺(tái)機(jī)器IP為172.16.12.81,用戶名為user1,密碼為123456。然后在C盤(pán)創(chuàng)建路徑 C:\ci_jenkins 作為Jenkins操作的根目錄。另外還需要在這臺(tái)機(jī)器上安裝JDK或JRE,我以前配置時(shí)這里如果使用64位的JDK會(huì)有問(wèn)題,所以我也不再實(shí)驗(yàn)了,這里直接安裝32位的JDK。 
          在Jenkins的“管理節(jié)點(diǎn)”頁(yè)面上,點(diǎn)擊“新建節(jié)點(diǎn)”,類(lèi)型選擇“Dumb Slave”,名稱比如叫“172.16.12.81_win7”,點(diǎn)擊“OK”按鈕進(jìn)入設(shè)置頁(yè)面。 
          其中“# of executors”我們選擇4,表示可以同時(shí)進(jìn)行4個(gè)構(gòu)建。 
          “Remote FS root”填寫(xiě)之前創(chuàng)建的目錄 C:\ci_jenkins 
          “Labels” 是這樣的,假如你的需求是要求同時(shí)在 WindowsXP,Win7這兩個(gè)操作系統(tǒng)上構(gòu)建,你就創(chuàng)建兩個(gè)奴隸節(jié)點(diǎn),一個(gè)安裝WindowsXP系統(tǒng),一個(gè)安裝Win7系統(tǒng),這兩個(gè)節(jié)點(diǎn)的名稱不一樣,但Labels 可以設(shè)置成一樣的 win,這樣在創(chuàng)建Job時(shí)指定在Label為win的節(jié)點(diǎn)上構(gòu)建時(shí),兩臺(tái)機(jī)器都會(huì)進(jìn)行構(gòu)建,當(dāng)然這里可以用空格分隔地添加幾個(gè)Label。 
          “Launch method”這里我們選擇“Let Jenkins control this Windows slave as a Windows service”,這種配置方式有點(diǎn)自虐,不過(guò)配置好的話是最好用的。 
          點(diǎn)擊“高級(jí)”按鈕,在“Path to java executable”輸入java路徑,特別注意,不能寫(xiě)成 java.exe。 



          保存后,點(diǎn)擊“Launch slave agent”按鈕。看到下面的錯(cuò)誤信息: 



          別急,意料之中。在上個(gè)頁(yè)面中你留意到有這么一個(gè)鏈接“subtle problems”,里面就是配置windows系統(tǒng)奴隸節(jié)點(diǎn)的常見(jiàn)問(wèn)題。 

           


          我們回到Win7這臺(tái)奴隸節(jié)點(diǎn),按照鏈接里的內(nèi)容好好修理修理它。 
          首選要保證這個(gè)用戶是本地的“Administrator”組成員,如果你和我一樣是在安裝操作系統(tǒng)時(shí)創(chuàng)建的用戶,這一條是滿足的。 
          點(diǎn)擊“開(kāi)始”按鈕,輸入“gpedit.msc”,打開(kāi)“本地組策略編輯器”。 
          在“計(jì)算機(jī)配置”→“管理模版”→“系統(tǒng)”→“用戶配置文件”中,將“在用戶注銷(xiāo)時(shí)不要強(qiáng)制卸載用戶注冊(cè)表”設(shè)置為“已啟用”。 




          下面就是設(shè)置防火墻的策略了,這個(gè)我嫌麻煩,干脆把防火墻關(guān)閉了。 








           

          接下來(lái)打開(kāi)“注冊(cè)表編輯器” 


           

          在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 下面創(chuàng)建一個(gè) DWORD(32-位)值。 


           

          設(shè)置 LocalAccountTokenFilterPolicy 值 1。 


           

          按 Ctrl + F,搜索 “{76A64158-CB41-11D1-8B02-00600806D9B6}”,右鍵選擇“權(quán)限”,需要注意的是,它在 HKEY_CLASSES_ROOT\CLSID 下。 


           

          點(diǎn)擊“高級(jí)” 


           

          切換到“所有者”頁(yè)簽,將“當(dāng)前所有者”修改為“Administrators”組。 


           

          再切換到“權(quán)限”頁(yè)簽,選擇“Administrators”組,點(diǎn)擊“編輯”按鈕,修改成“完全控制”。 




          再把“所有者”切換回“TrustedInstaller”(NT Service\TrustedInstaller) 


           

          注冊(cè)表都設(shè)置好以后,最好注銷(xiāo)再登錄一下,讓注冊(cè)表生效。 
          在“計(jì)算機(jī)管理”的“服務(wù)”中,找到“Remote Registry ”服務(wù)。 




          啟動(dòng)它,并設(shè)置啟動(dòng)類(lèi)型為“自動(dòng)”。 


           

          現(xiàn)在重新在Jenkins頁(yè)面上點(diǎn)擊“Launch slave agent”按鈕。 


           

          看到已經(jīng)成功連接的提示 


           

          回到首頁(yè),可以看到Win7的系統(tǒng)已經(jīng)就緒。 


           

          創(chuàng)建類(lèi)Unix系統(tǒng)(Linux,OSX等)的奴隸節(jié)點(diǎn) 

          對(duì)于類(lèi)Unix系統(tǒng),創(chuàng)建節(jié)點(diǎn)就要簡(jiǎn)單許多,一般默認(rèn)都安裝了SSH的服務(wù),我們的計(jì)劃是讓Jenkins通過(guò)SSH來(lái)登錄并管理奴隸節(jié)點(diǎn)。但通過(guò)用戶名和密碼訪問(wèn)SSH不是一個(gè)特別好的方式,我們可以配置通過(guò)私鑰的方式來(lái)登錄SSH。 
          比如我們以一臺(tái)CentOS系統(tǒng)的虛擬機(jī)為例,假設(shè)IP為172.16.12.82。我們先在上面創(chuàng)建一個(gè)用于登錄的用戶jenkins。然后登錄到這個(gè)用戶。 

          Java代碼  收藏代碼
          1. [root@svr82 ~]# useradd jenkins  
          2. [root@svr82 ~]# su - jenkins  
          3. [jenkins@svr82 ~]$  


          生成一個(gè)密鑰對(duì)(這中間會(huì)有幾次詢問(wèn),都直接輸入回車(chē))。 

          Java代碼  收藏代碼
          1. [jenkins@svr82 ~]$ ssh-keygen -t rsa  
          2. Generating public/private rsa key pair.  
          3. Enter file in which to save the key (/home/jenkins/.ssh/id_rsa):   
          4. Created directory '/home/jenkins/.ssh'.  
          5. Enter passphrase (empty for no passphrase):   
          6. Enter same passphrase again:   
          7. Your identification has been saved in /home/jenkins/.ssh/id_rsa.  
          8. Your public key has been saved in /home/jenkins/.ssh/id_rsa.pub.  
          9. The key fingerprint is:  
          10. 6b:81:28:af:5e:54:bb:af:cf:e3:f5:2d:0a:aa:50:71 jenkins@svr82.vow.funshion.com  
          11. [jenkins@svr82 ~]$  


          現(xiàn)在可以看到在jenkins用戶的家目錄下的 .ssh 目錄下創(chuàng)建了兩個(gè)密鑰:公鑰 id_rsa.pub 和私鑰 id_rsa。 

          Java代碼  收藏代碼
          1. [jenkins@svr82 ~]$ ls -l ~/.ssh/  
          2. 總計(jì) 8  
          3. -rw------- 1 jenkins jenkins 1675 10-14 18:26 id_rsa  
          4. -rw-r--r-- 1 jenkins jenkins  412 10-14 18:26 id_rsa.pub  


          現(xiàn)在將公鑰添加到這臺(tái)主機(jī)的 authorized_keys 文件中,并修改權(quán)限為600 

          Java代碼  收藏代碼
          1. [jenkins@svr82 .ssh]$ pwd  
          2. /home/jenkins/.ssh  
          3. [jenkins@svr82 .ssh]$ cat id_rsa.pub >> authorized_keys     
          4. [jenkins@svr82 .ssh]$ chmod 600 authorized_keys  


          現(xiàn)在 id_rsa 和 id_rsa.pub 這兩個(gè)文件不是必須要保留的這臺(tái)服務(wù)器上,但你要保存好 id_rsa 因?yàn)檫@個(gè)是訪問(wèn)此服務(wù)器的私鑰。 
          還有一點(diǎn)需要特別注意的是假如你的 ~/.ssh 目錄是自己手動(dòng)創(chuàng)建的,或者 id_rsa 從其他地方拷貝來(lái)的,如果此時(shí)發(fā)現(xiàn)無(wú)法通過(guò)私鑰進(jìn)行 ssh 連接時(shí),請(qǐng)檢查下面文件/目錄的權(quán)限是否和我列出的一樣。 

          Java代碼  收藏代碼
          1. [jenkins@svr82 ~]$ ls -l ~/.ssh/authorized_keys   
          2. -rw------- 1 jenkins jenkins 412 10-14 18:51 /home/jenkins/.ssh/authorized_keys  
          3. [jenkins@svr82 ~]$ ls -l ~/.ssh/id_rsa  
          4. -rw------- 1 jenkins jenkins 1675 10-14 18:26 /home/jenkins/.ssh/id_rsa  
          5. [jenkins@svr82 ~]$ ls -ld ~/.ssh    
          6. drwx------ 2 jenkins jenkins 4096 10-14 18:51 /home/jenkins/.ssh  


          回到Jenkis的頁(yè)面上,我們先來(lái)配置一下訪問(wèn)這個(gè)服務(wù)器的“Credential”,在Jenkins頁(yè)面的左側(cè)快捷欄中點(diǎn)擊“Credentials” 


           




          這里面有個(gè)憑據(jù)域的概念,其實(shí)他的目的就是,假如我們配置了很多登錄服務(wù)器的憑據(jù),通過(guò)各個(gè)域來(lái)分類(lèi)整理這些憑據(jù),比如所有訪問(wèn)服務(wù)器A的憑據(jù)都在一個(gè)域里這種情況。我們目前暫時(shí)先不創(chuàng)建域,直接選擇默認(rèn)的“Global credentials”,點(diǎn)擊左側(cè)的“Add Credentials”添加訪問(wèn)服務(wù)器的憑據(jù)。 





          在“Kind”里,我們選擇“SSH Username with private key”;“Username”這里輸入登錄上面服務(wù)器的用戶名“jenkins”;“Private Key”這里選擇“Enter directly”,輸入內(nèi)容就是上面步驟里創(chuàng)建的 id_rsa 文件內(nèi)容。 




          下面在這臺(tái)CentOS服務(wù)器上裝好JDK,準(zhǔn)備工作基本上完成了。 

          Java代碼  收藏代碼
          1. [root@svr82 ~]# java -version  
          2. java version "1.6.0_25"  
          3. Java(TM) SE Runtime Environment (build 1.6.0_25-b06)  
          4. Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)  


          下面在Jenkins的“系統(tǒng)管理”→ “管理節(jié)點(diǎn)”中點(diǎn)擊“新建節(jié)點(diǎn)”,填寫(xiě)內(nèi)容和之前創(chuàng)建Windows節(jié)點(diǎn)類(lèi)似。 




          在“Launch method”中選擇“Launch slave agents on Unix machines via SSH”;“Credentials”這里選擇我們剛剛創(chuàng)建的憑據(jù)。 

          特別要注意的是“JVM Options”這里,“-Djava.awt.headless=true”不是每個(gè)類(lèi)Unix系統(tǒng)都必須輸入,但我發(fā)現(xiàn)在蘋(píng)果的OSX系統(tǒng)中不設(shè)置會(huì)報(bào)錯(cuò)誤“Can't connect to window server - not enough permissions.”。 




          連接成功! 


           

          現(xiàn)在我們有兩個(gè)可以用的奴隸節(jié)點(diǎn)了: 


           

          posted on 2014-02-18 14:09 順其自然EVO 閱讀(5674) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 持續(xù)集成

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 曲周县| 曲麻莱县| 清新县| 揭西县| 玉环县| 连江县| 武强县| 广安市| 扬州市| 南江县| 南丰县| 湾仔区| 崇义县| 苍溪县| 台安县| 微山县| 邵阳县| 全州县| 东山县| 漳浦县| 无为县| 淮南市| 容城县| 格尔木市| 环江| 遂溪县| 常山县| 永宁县| 阳高县| 肃宁县| 久治县| 海门市| 固安县| 桓台县| 城固县| 合作市| 嘉定区| 滕州市| 岑溪市| 广东省| 冷水江市|