Jenkins 已弃用 JNLP 连接 将 windows 从机连接到 jenkins 的新推荐方式是什么?

JNLP Connections are deprecated in Jenkins what is the new recommended way connecting a windows slave to jenkins?

由于标题已经说明 JNLP 连接已弃用,Jenkins 还提供了一条消息和一个指向

的超链接

https://en.wikipedia.org/wiki/Java_Web_Start#Deprecation

那么现在将 Windows Slave 附加到 Jenkins 的推荐方法是什么,似乎没有关于 https://jenkins.io 涵盖该主题的真正好的指南。

开源替代方案

有一个名为 OpenWebStart which is based on IcedTeaWeb 的开源替代品。

更多信息:Java Web Start is dead - long live OpenWebStart!

OpenWebStart is an open source implementation of the WebStart and JNLP standards (JSR-56).

[...]

In IcedTeaWeb we are currently working on mapping the JNLP spec and supporting its functions to the greatest extent possible. In addition to OpenWebStart, which uses IcedTeaWeb as its core, IcedTeaWeb is also used within AdoptOpenJDK to provide minimal WebStart in the Java 8 releases of AdoptOpenJDK. However, these are limited compared to OpenWebStart because they can only use the current JVM to run JNLP-based applications.

去掉Java Web Start使用命令行安装Jenkins服务

使用 jenkins-slave.exe(又名 winsw-*.exe)从命令行安装 Jenkins 服务时,不再需要 Java Web Start。看来JNLP协议还在幕后使用,所以以后可能还是会有一些deprecation的问题。

步骤(假设您已经在 J​​enkins master 中设置了节点):

  1. http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/ 下载最新的服务包装器(例如 "winsw-2.2.0-net4.exe")
    将其放在 Custom WorkDir 路径中并重命名为 "jenkins-slave.exe"
  2. 下载"agent.jar":http://YourJenkinsServer:8080/jnlpJars/agent.jar
    将其放在 Custom WorkDir 路径中并重命名为 "slave.jar"
  3. 在同一目录下创建"jenkins-slave.xml":

    <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>
    
  4. 根据您的环境调整"jenkins-slave.xml"。确保调整所有前缀为 "Your" 的字符串以及 "java.exe" 的路径。您将在 Jenkins master 的节点配置页面上找到秘密字符串和正确的 jnlpUrl(例如 http://YourJenkinsServer:8080/computer/YourNodeName/)。
    Official documentation
  5. 创建 "jenkins-slave.exe.conf" 文件以防止可执行文件在较早版本的 .NET Framework 上 运行。

    <configuration>
      <startup>
        <supportedRuntime version="v4.0"/>
      </startup>
    </configuration>
    
  6. 以管理员身份启动 "cmd.exe" 并导航到 "jenkins-slave.exe".

  7. 的目录
  8. 安装服务:
    jenkins-slave.exe install
  9. 启动服务:
    sc start YourJenkinsSlaveServiceId