3

我正在使用 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(主)中安装了插件,并从一台 Linux 机器(我想用作从机)下载了带有依赖项 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 http://jenkins_server.yo .company.com:8081 -disableSslVerification -username c123456 -password $p -description "`hostname -a` " -executors 5 -labels "ANSIBLE_CENTOS CENTOS" -mode 'exclusive' -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 master 中,我看到从站已成功创建(使用 JLNP 身份验证),但从站的名称有点奇怪。

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

我希望从站名称只是:jmeter01_01someserver_01someserver.fq.dn_01

我可能给错了什么?

4

2 回答 2

7

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

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

另外:要在从属配置中创建工具位置,我使用了-t Java=~/tools/jdk1.8.0_45 -t Gradle=~/tools/gradle-2.9并且该命令给了我一个错误No tool 'Java' is defined在詹金斯

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 工具的值~/tools/jdk1.8.0_45 。

PS:没有办法使用 swarm 客户端 jar 来定义 ENVIRONMENTAL 变量(就像我们通常在 Jenkins GUI 中的节点/从属配置中定义/看到的那样)(这是可以使用这个新功能增强 Swarm 插件的东西)。

于 2015-12-03T22:23:56.033 回答
0

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

于 2016-08-11T18:48:06.223 回答