簡體   English   中英

Jenkins:使用命令或Groovy腳本動態配置從節點地址

[英]Jenkins: configure slave node address dynamically using command or groovy script

我有一個ssh slave build jenkins setup。

Jenkins服務器通過ssh連接到Mac從屬服務器。 在那建立ios應用程式。 在連接到Mac的Jenkins中配置了兩個遠程節點。 Mac有dhcp。

每當我的Mac啟動時,我都想運行一個腳本,告訴Jenkin服務器配置指向Mac接收到的dhcp地址的節點的IP地址。 自從它的dhcp以來,它總是在變化。

可以配置這樣嗎? 使用shell腳本或perl ...

e.g. http://jenkins-server:8080/computer/mac-slave-enterprise/configure

是節點配置網址。 如果可以通過發送host = 10.1.2.100&Submit = Save進行設置或類似的方法?

我發現可以在以下位置運行Groovy腳本

http://jenkins/script

或通過mac命令行或sh腳本,

$ curl -d "script=<your_script_here>" http://jenkins/script

我試圖通過此代碼獲取一些信息,但是沒有運氣,似乎我已經創建了SSLLauncher,但是在如何獲取啟動器方面迷失了方向。 沒有直接的setHost或setLauncher東西。

遵循以下教程,

https://wiki.jenkins-ci.org/display/JENKINS/Display+Information+About+Nodes

但無法設置主機地址。

println("node desc launcher = " + aSlave.getComputer().getLauncher()); 
  //println("node desc launcher = " + aSlave.getComputer().getLauncher().setHost("10.11.51.70")); 
  println("node launcher host = " + aSlave.getComputer().getLauncher().getHost()); 

  hudson.plugins.sshslaves.SSHLauncher ssl = aSlave.getComputer().getLauncher(); 
  int port = ssl.getPort(); 
  String userName, password, privateKey; 
  userName = ssl.getUsername(); 
  password = ssl.getPassword(); 
  privateKey = ssl.getPrivatekey(); 

  println("user: "+userName + ", pwd: "+password + ", key: "+privateKey); 
// all these values returns null. 

另一種方法是只刪除節點並重新創建它。

這是有關如何從此處刪除它的一些技巧:

  for (aSlave in hudson.model.Hudson.instance.slaves) { 
    if (aSlave.name == "MySlaveToDelete") { 
      println('===================='); 
      println('Name: ' + aSlave.name); 
      println('Shutting down node!!!!'); 
      aSlave.getComputer().setTemporarilyOffline(true,null); 
      aSlave.getComputer().doDoDelete(); 
    } 

這是創建一個( )的方法:

import jenkins.model.*
import hudson.model.*
import hudson.slaves.*

Jenkins.instance.addNode(new DumbSlave("test-script","test slave description","C:\\Jenkins","1",Node.Mode.NORMAL,"test-slave-label",new JNLPLauncher(),new RetentionStrategy.Always(),new LinkedList())) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM