Jenkins Swarm插件 - 具有RANDOM字母数字值的从属名称

时间:2015-12-03 21:04:42

标签: jenkins jenkins-plugins master-slave slave docker-swarm

我正在使用Jenkins(1.573)和Swarm插件(2.0):https://wiki.jenkins-ci.org/display/JENKINS/Swarm+Plugin

http://maven.jenkins-ci.org/content/repositories/releases/org/jenkins-ci/plugins/swarm-client/2.0/

下载了jar

我已经在Jenkins(master)和一台Linux机器(我想用作Slave)中安装了插件,我下载了带有依赖项2.0的swarm客户端jar并运行了以下命令:

注意
$ p变量的密码存储在其中。
可以正常使用模式(而不是排他性)。

$ java -jar swarm-client-2.0-jar-with-dependencies.jar -name“`hostname -a`_01”-fsroot“`pwd` /`hostname -a`_01”-master { {3}} -disableSslVerification -username c123456 -password $ p -description“`hostname -a`” - executors 5 -labels“ANSIBLE_CENTOS CENTOS”-mode'private'-retry 3

Discovering Jenkins master
Dec 03, 2015 3:52:58 PM org.apache.commons.httpclient.HttpMethodBase getResponseBody
WARNING: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
Attempting to connect to http://jenkins_server.yo.company.com:8081/ 1229493c-3bd5-4cf4-9210-3392089f2ee2 with ID 1893f0ea
Could not obtain CSRF crumb. Response code: 404
Dec 03, 2015 3:53:01 PM hudson.remoting.jnlp.Main createEngine
INFO: Setting up slave: jmeter01_01-1893f0ea
Dec 03, 2015 3:53:01 PM hudson.remoting.jnlp.Main$CuiListener <init>
INFO: Jenkins agent is running in headless mode.
Dec 03, 2015 3:53:01 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Locating server among [http://jenkins_server.tsh.thomson.com:8081/]
Dec 03, 2015 3:53:02 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to jenkins_server.tsh.thomson.com:53605
Dec 03, 2015 3:53:02 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Dec 03, 2015 3:53:02 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected

在Jenkins大师中,我看到奴隶成功创建(使用JLNP auth)但奴隶的名字有点奇怪。

不是将从属名称创建为主机名(即 jmeter01 在我的情况下 jmeter01.yo.company.com),而是使用RANDOM为从属名称添加后缀字母数字值。有时为 jmeter01_01-ee12355ec ,有时为 jmeter01_01-1893f0ea

我希望奴隶名称只是: jmeter01_01 someserver_01 someserver.fq.dn_01

我可能错在哪里?

2 个答案:

答案 0 :(得分:4)

在命令行中使用选项 -disableClientsUniqueId 解决了它。

我认为-name VALUE应该足够了,但似乎他们采取了每次创建奴隶的方法(无论如何),这就是为什么他们将名称后缀为唯一/字母数字ID值的原因奴隶名。使用上面的属性解决了它(在我做了更多研究后发现他们在2.0版本中引入了修复程序)。

添加:要在slave的配置中创建Tool位置,我使用了 -t Java =〜/ tools / jdk1.8.0_45 -t Gradle =〜/ tools / gradle-2.9 并且命令给出了我错了没有工具'Java'在Jenkins上定义

javax.servlet.ServletException: java.lang.RuntimeException: No tool 'Java' is defined on Jenkins.

经过研究,我发现这是因为在Jenkins Master(我使用过)中,它的 JDK安装部分(在Jenkins全局设置中)将此工具的Name值设置为“java”。

尝试-t java = 〜/ tools / jdk1.8.0_45解决了这个问题,现在我可以看到(JDK)java工具的值〜/ tools / jdk1.8.0_45 < / strong>在奴隶的配置中。

PS :没有办法使用swarm客户端jar定义ENVIRONMENTAL变量(就像我们通常在Jenkins GUI中定义/查看节点/ slave的配置一样)(这可以增强Swarm插件的内容)这个新功能)。

答案 1 :(得分:0)

Templorary我通过将jenkins-swarm插件版本降级到1.2

解决了这个问题