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

Jenkins Swarm plugin - Slave name with RANDOM alphanumeric value

我正在使用 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

我已经在 J​​enkins(master)和其中一台 Linux 机器(我想用作从机)中安装了插件,我下载了具有依赖项 2.0 和 运行 以下命令:

注意
$p 变量中存储了密码。
可以正常使用模式(而不是独占)。

$ java -jar swarm-client-2.0-jar-with-dependencies.jar -name "`hostname -a`_01" -fsroot "`pwd`/ `hostname -a`_01" -master http://jenkins_server.yo.company.com:8081 -disableSslVerification -username c123456 -password $p -description "`hostname -a` " -executors 5 -labels "ANSIBLE_CENTOS CENTOS" -mode 'exclusive' -重试 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 master 中,我看到 slave 已成功创建(使用 JLNP auth)但是 slave 的名字有点奇怪。

而不是创建从属名称作为主机名(即 jmeter01 在我的例子中 jmeter01.yo.company.com),它是后缀具有随机字母数字值的从名称。有时 jmeter01_01-ee12355ec 有时 jmeter01_01-1893f0ea

我希望奴隶的名字只是:jmeter01_01 or someserver_01 or someserver.fq.dn_01

我可能给错了什么?

在命令行中使用选项 -disableClientsUniqueId 解决了这个问题。

我认为 -name VALUE 应该足够了,但似乎他们采取了每次都会创建从属的方法(无论如何),这就是为什么他们在名称后缀 Unique/Alphanumeric从名称的 ID 值。使用上面的 属性 解决了它(在我做了更多研究后发现他们在 2.0 版中引入了修复)。

补充:为了在从站配置中创建工具位置,我使用了 -t Java=~/tools/jdk1.8.0_45 -t Gradle=~/tools/gradle-2.9 并且命令给了我一个错误 Jenkins.

上没有定义工具 'Java'
javax.servlet.ServletException: java.lang.RuntimeException: No tool 'Java' is defined on Jenkins.

经过研究,我发现这是因为在 Jenkins Master(我使用的)中,JDK Installations 部分(在 Jenkins 全局设置中)有这个工具名称值设置为 "java".

尝试 -t java=~/tools/jdk1.8.0_45 解决了问题,现在我可以看到 (JDK) java tool with value ~/tools/jdk1.8.0_45 in slave's configuration.

PS:无法定义环境变量(就像我们通常在 Jenkins GUI 的 node/slave 配置中 define/see ) 使用 swarm 客户端 jar(这是可以使用此新功能增强 Swarm 插件的东西)。

暂时我通过将 jenkins-swarm 插件版本降级到 1.2 解决了这个问题