jenkins(六):Jenkins節點管理


Jenkins(6):Jenkins節點管理

http://www.mamicode.com/info-detail-2255764.html

 

我們在使用jenkins的時候,一般來說肯定是有slave節點的。任務一般是在slave上面運行的。當然不是講master節點不能跑任務,master節點主要是處理調度構建作業,把構建分發到slave節點進行實際執行,監視slave節點的狀態(必要時讓它們進行上線或者離線),記錄和發布構建產物。

主要常用的的連接slave節點的方式就是通過ssh和jnlp

  • ssh來說,我們一般用的服務器都是linux系統,當然最方便的就是通過ssh啟動jenkins節點,但是這個有個前提的要求就是master和slave之前能進行ssh連接
  • jnlp連接方式有個好處就是不用master和slave之間能夠ssh連接,只需要能夠ping即可。並且如果slave的機器是windows的話,也是可以的這個其實是非常實用的,因為有時候,可能一些權限或者防火牆的原因,這master和slave真的不能夠ssh連接,還有一些未知的原因無法ssh到slave節點(我下面說的公司這個例子就是這樣),都可以通過jnlp的方式進行連接。

 

Ssh方式連接slave

必須有slave機器的賬號才行,但不要求必須是root賬號。
這種方式的前提是需要安裝SSH Slaves plugin插件。
這種方式的步驟如下:

 

1、輸入slave節點的IP。

2、Add Credentials:

有如下兩種方式:

  1)通過Username with password方式

  需要知道slave機器的用戶名和密碼

 

  2)通過SSH Username with private key方式

  需要先在master機器上生成ssh key pair。生成的 public key放到slave機器的 ~/.ssh/authorized_keys里面。然后chmod 600 ~/.ssh/authorized_keys。

  然后,添加連接slave的credential,

 

這兩種方式的Scope選項,我選擇的是System,表示這個Credentials僅僅是用來master和node進行連接用的。還有另外一種是“Global(Jenkins、nodes、items、child items)”,這種scope的Credential可以用來連接git等其他機器。具體選擇哪種scope,根據自己的需要。就連接slave這個需求來說,哪種scope的credential都可以。
Username填寫在master上生成key pair時使用的用戶名。
Private key選擇From the jenkins master ~/.ssh

Jenkins的SSH Credentials Plugin插件,可以集中管理這些ssh 的key。安裝完這個插件,可以在Jenkins上看到這樣的頁面

這個頁面可以對credentials進行添加、刪除、修改等操作。在這里設置的credentials在jenkins的其他需要credentials的地方,可以通過下拉菜單選擇使用,比如添加slave時,可以直接在Credentials下拉菜單里選擇對應的credential就行

 

 

還有git clone代碼時:

此時一定要把在master上生成的 public key添加到github賬號的的Profile setting頁面里的SSH Keys Settings中。

用戶密碼方式

 

 

 

 

 

 

 

sshbug

下線重連就好了

<===[JENKINS REMOTING CAPACITY]===>ERROR: Unexpected error in launching a agent. This is probably a bug in Jenkins.

java.lang.IllegalStateException: Already connected

        at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:594)

        at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:432)

        at hudson.plugins.sshslaves.SSHLauncher.startAgent(SSHLauncher.java:607)

        at hudson.plugins.sshslaves.SSHLauncher.access$400(SSHLauncher.java:113)

        at hudson.plugins.sshslaves.SSHLauncher$1.call(SSHLauncher.java:441)

        at hudson.plugins.sshslaves.SSHLauncher$1.call(SSHLauncher.java:406)

        at java.util.concurrent.FutureTask.run(FutureTask.java:266)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

        at java.lang.Thread.run(Thread.java:745)

[06/26/19 16:36:45] Launch failed - cleaning up connection

[06/26/19 16:36:45] [SSH] 連接關閉。

 

 

私鑰方式

記住是私鑰,不是公鑰,cat .ssh/id_rsa

 

 

-----BEGIN RSA PRIVATE KEY-----

MIIEpAIBAAKCAQEAzOx9ORYwSAKdyRBRsfD85MmXv3PurJoST1nJE4QqumygHcsU

HnkQp6NfDjCiJKJjXRpxDijvoQGa+xMpJySbiL5LzFlEWk17RX+fs3ztEk7ot8l9

jWKoTDWUsD7zMKXTTllKO6bOivvyUPPWqhgZ4Cuu29Fsxq2chU4Wg63eq2b7wKbg

rFgDkL9XMqVMtxxTbhyXjBRFkHtIWIFOSeDBlfuvfW3odDZh3sfUqTjdPAPGlQUA

K9eIplaQkVyN33FZ3eXwr5ylLBca1aCM7WKRVVOuZKFrv4Uqb6WB454ln7jlmz2r

MYaD4nk1IXcBjXGAshpAVd/IBC5nEJgpPeZFVwIDAQABAoIBAEkzCKAFrwVp+dbC

f4wiWxOWdyAqV01MU9IIbm0MPv8Moj1CN1OTR0G6d8/ny2NupjOxqES4lrBalHOv

KnoS94PnBche8q2XE7uFlRRWQZDSowpTbQe+AAQI963lLpVoBozsFDouoYS/7pTA

JSPpLAUJVZKrwkFN7qUneZ9b0jhDEsri5rSSI5xzMIYKMcNm2ZMpVzVCTQhRgPo2

LzGz76boTzFBXZ3y5QM1LPG3rbpRWE1vXSpvx6Q2onG7VdWGz6fwlEQC6KjksrKP

UymevpzD+RBuWC5JAlZ1Q6XBRVJdqE+p6pTobkdHGDGy/WeI5JUTYBC9oGnyvIi4

PFeQu9ECgYEA+p717KJtWfmXlbCYlSC7C5AFwQc7vkKPVeCdKNLXW13VB7Ke8yuo

u5Vl1Z4vvBZNqmCn0kK07vJMnIjSbQ/BTPefQ0NikZWQ8/eBZ8THNgti2aEpaH9R

r1juqScahgWbS8ARrFuGBHo/rkz/jOML66jhkYBtSW6ZgPWJuL7ExsUCgYEA0VJx

7O+6U1i/o6mbQKhJH92ITPc28UM4jAywUY7it3Bhulf1Ldlr05SSvruMtiHwFVmz

kC3jIUKA5wQfwJz70glVLPfLchg/eCBj+ejJztxLiDBTxAlmt74ptkGtNdZ9oQ8i

hcr3x7GnCmAT/wmkSPgTNJhz0OO20MP6xAvFfWsCgYEA+lh5ffROWVdKBVwPPsAg

N4+ZP9Vy5z3jojwpoRLjzr+vQe46etu8xAybWcSXGEILOMsuOIkr5Zgh0SeXUxwu

0ix0aaNRPe3yitFM8ZQODr1W89/Z1imANjEWzd9izkehdgyZWttdxvE61WjSyTAv

wyrCkC6CfJy/N6ON+/6L36UCgYEAhsWifH9NZGR73xBQ2ayAiHfGTmfNhEFXozR4

QcrRxnIhOi1vuvmGJ1A9u3hd/NaVEeoTZv1khAGhpRxOpWFt8an4oV9aKjfaham1

NS7g4MOODj2vcUTsUdmqWaKnt0ZG1PA9tg8cwgJsHo4F0euPTzwKgY624wP6rSfB

yYAaw8kCgYAJ4NKVWy3Zy4iPeUE+h1paQQEgJpqwpeMPnEXn5RJ/FN1bwseTIa3n

ZqN9toDLdNH8w0qnhUiAqqa5qrkREbvYPb9QSYt7pi3iV7nOsw2o0BDqT+AusdLz

A37TQC2jih/YyMJ1eepmTtJN9T4LmtsuZLa43817MAkgu9geRqzdJg==

-----END RSA PRIVATE KEY-----

 

 

復制節點

在節點環境配置好之后,我們再添加節點就可以復制了,修改IP和其他自定義配置即可。

 

 

 

JNLP方式連接salve (回頭補上)

不需要master必須能夠ssh連接到slave,只需要兩者能夠ping通即可。

接下來的任務是將該節點連到master上。與ssh方式是master主動連接slave不同,這種JNLP方式是slave主動連接master。
登陸到slave機器上,運行上圖中的java -jar 命令,即可將slave連接到master上了。
,自動重啟。
腳本地址:
https://github.com/liuchunming033/setup_jenkins_slave
參考資料
http://www.nerdnuts.com/2014/06/jenkins-managing-ssh-keys/

 

 

job調用節點

  • 限制項目運行的節點

 

 

  • 參數選擇node或label

並發構建

需要安裝Node and Label parameter plugin插件

需要配置node類型參數

  • 如果兩個都配置,node參數優先生效

 

label方式

 

 

 

 

 

node方式

可能是我配置的問題,看起來像是並發構建了

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM