问题描述
想要在运行在Red Hat Enterprise Linux 7.x上的Jenkins(版本2.89.2)的主节点上,将Windows Server 2016作为从节点。他尝试从Windows服务器的Jenkins Web界面安装slave-agent.jnlp文件。他在以管理员身份打开的PowerShell中运行以下命令:
javaws -verbose C:\Users\Administrator\Downloads\slave-agent.jnlp
然后他收到以下错误:
Error: The field <jnlp><application-desc><argument> has an invalid value:Launch File<jnlp codebase="http://FQDNofJenkinsServer:8080/computer/FQDNofWindowsSlave/" spec="1.0+"><information><title>Agent for FQDNofWindowsSlave</title><vendor>Jenkins project</vendor><homepage href="https://jenkins-ci.org/"/></information><security><all-permissions/></security><resources><j2se version="1.8+"/><jar href="http://FQDNofJenkinsServer:8080/jnlpJars/remoting.jar"/></resources><application-desc main-class="hudson.remoting.jnlp.Main"><argument>32ba31ca5f150c2b3491802b0b60e56574d970a9e601cebad656a113fe325a85</argument><argument>FQDNofWindowsSlave</argument><argument>-workDir</argument><argument/><argument>-internalDir</argument><argument/><argument>-url</argument><argument>http://FQDNofJenkinsServer:8080/</argument></application-desc></jnlp>ExceptionBadFieldException[ The field <jnlp><application-desc><argument> has an invalid value: ,] at com.sun.javaws.jnl.XMLFormat$10.visitElement(Unknown Source) at com.sun.javaws.jnl.XMLUtils.visitElements(Unknown Source) at com.sun.javaws.jnl.XMLFormat.buildApplicationDesc(Unknown Source) at com.sun.javaws.jnl.XMLFormat.process(Unknown Source) at com.sun.javaws.jnl.XMLFormat.parse(Unknown Source) at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source) at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source) at com.sun.javaws.Main.launchApp(Unknown Source) at com.sun.javaws.Main.continueInSecureThread(Unknown Source) at com.sun.javaws.Main.access$000(Unknown Source) at com.sun.javaws.Main$1.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
用户期望命令能够正常工作,但是他不理解错误信息。他应该怎么办?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
你的错误信息中有两个空参数:
<application-desc main-class="hudson.remoting.jnlp.Main">
<argument>32ba31ca5f150c2b3491802b0b60e56574d970a9e601cebad656a113fe325a85</argument>
<argument>FQDNofWindowsSlave</argument>
<argument>-workDir</argument>
<argument/>
<argument>-internalDir</argument>
<argument/>
<argument>-url</argument>
<argument>http://FQDNofJenkinsServer:8080/</argument>
</application-desc>
你的错误信息中有一个逗号:
BadFieldException[ The field has an invalid value: ,]
在互联网上的其他错误信息中,也有逗号分隔的错误参数列表:
BadFieldException[ The field codebase has an invalid value: $$codebase,$$codebase]
所以我猜测这两个空参数是问题所在。
方案2
Jenkins提供了agent.jar
和一个用于从节点连接到主节点的密钥。确保节点正确配置(Manage Jenkins → Manage Nodes → Node)。
确保Windows节点上存在Java 1.8。在Windows机器上下载agent.jar
文件,并使用Windows命令提示符运行Jenkins提供的命令。
java -jar agent.jar -jnlpUrl http://localhost:8080/computer/example/slave-agent.jnlp -secret e6073ce49423ed54df4a24f918973f50dc760dd440013d3b30403c4a2c7501fd -workDir "c:\jenkins"
以上是两种解决方案,你可以根据自己的情况选择其中一种来解决问题。
正文完