使用 Winsw 的 Jenkins Windows Slave 设置不起作用

标签 jenkins

使用此信息 https://hayato-iriumi.net/2019/05/23/how-to-install-jenkins-slave-as-windows-service/我们正在 Windows 服务器上设置 Jenkins Slave。 Jenkins 代理从命令行启动。但是当我们从 Windows 服务启动时,它给出以下错误信息?如何解决此错误消息?

Service cannot be started. System.IO.InvalidDataException: Attribute <className> is missing in configuration XML
   at winsw.Util.XmlHelper.SingleAttribute[TAttributeType](XmlElement node, String attributeName)
   at winsw.Extensions.WinSWExtensionDescriptor.FromXml(XmlElement node)
   at winsw.Extensions.WinSWExtensionManager.LoadExtension(String id)
   at winsw.Extensions.WinSWExtensionManager.LoadExtensions()
   at winsw.WrapperService.OnStart(String[] args)
   at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)

我们有 xml 文件

<service>
  <id>JenkinsSlave</id>
  <name>Jenkins agent</name>
  <description>This service runs an agent for Jenkins automation server.</description>
  <executable>c:\java\jdk-11\bin\java.exe</executable>
  <arguments>-Xrs -jar "c:\jenkins\slave.jar" -jnlpUrl https://jenkinsmaster/jenkins/computer/slave01/slave-agent.jnlp -secret a4b5b4ddfd34a016cd3a8eb94cbe8f908613e33a66db5fa6f5f43a080aea3116 -workDir=c:\jenkins</arguments>
  <workingdirectory>c:\jenkins</workingdirectory>
  <logmode>rotate</logmode>
  <onfailure action="restart">
    <download from="https://jenkinsmaster/jenkins/jnlpJars/slave.jar" to="c:\jenkins\slave.jar"> 
        <extensions>
            <extension enabled="false" classname="winsw.Plugins.RunawayProcessKiller.RunawayProcessKillerExtension" id="killOnStartup">
                <pidfile>c:\jenkins\jenkins_agent.pid</pidfile>
                <stoptimeout>5000</stoptimeout>
                <stopparentfirst>false</stopparentfirst>
            </extension>
        </extensions>
    </download>
  </onfailure>
</service>

谢谢

最佳答案

链接网页(您的网页显然基于该网页)中显示的示例“Jenkins-Slave.xml”中存在一些错误。它的所有元素和属性都以小写字母命名,但实际上其中一些元素和属性应该是大小写混合的(从错误消息中可以看出它没有找到属性 className)。

试试这个:

<service>
  <id>YourJenkinsSlaveServiceId</id>
  <name>Your Jenkins Slave Service Name</name>
  <description>This service runs an agent for Jenkins automation server.</description>
  <executable>C:\Program Files\Java\JRE8\bin\java.exe</executable>
  <arguments>-Xrs -jar "%BASE%\slave.jar" -jnlpUrl http://YourJenkinsServer:8080/computer/YourNodeName/slave-agent.jnlp -secret YourSecretStringConsistingOfHexadecimalCharacters -workDir=C:\YourNodeWorkDir</arguments>
  <logmode>rotate</logmode>
  <onfailure action="restart" />
  <download from="http://YourJenkinsServer:8080/jnlpJars/agent.jar" to="%BASE%\slave.jar"/>
 <extensions>
    <extension enabled="true" className="winsw.Plugins.RunawayProcessKiller.RunawayProcessKillerExtension" id="killOnStartup">
      <pidfile>%BASE%\jenkins_agent.pid</pidfile>
      <stopTimeout>5000</stopTimeout>
      <stopParentFirst>false</stopParentFirst>
    </extension>
  </extensions>
</service>

这是我在 this answer 中对如何将代理安装为 Windows 服务的更详细解释。 .

关于使用 Winsw 的 Jenkins Windows Slave 设置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60835638/

相关文章:

java - 如何让 Jenkins 将我的项目部署到 JBoss EAP(AS7)

jenkins - 发布报告时 Sonar 空指针错误

git - 在 Docker 中的 Jenkins 构建脚本中调用 Git

jenkins - 如何使用 Jenkins DSL 设置作业超时

Jenkins 构建显示 "Operation not permitted"