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方式
可能是我配置的問題,看起來像是並發構建了