Соединения JNLP устарели в Jenkins. Каков новый рекомендуемый способ подключения windows подчиненного к jenkins? - PullRequest
1 голос
/ 24 февраля 2020

Поскольку в заголовке уже указано, что JNLP-соединения устарели, Дженкинс также выдает сообщение и гиперссылку на

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

Так что теперь является рекомендуемым способом присоединения Windows Раб Дженкинсу, похоже, нет действительно хорошего руководства по https://jenkins.io, охватывающему эти топи c.

1 Ответ

1 голос
/ 25 февраля 2020

Альтернатива с открытым исходным кодом

Существует замена с открытым исходным кодом под названием OpenWebStart , основанная на IcedTeaWeb .

Дополнительная информация: Java Веб-старт мертв - да здравствует OpenWebStart!

OpenWebStart - это реализация стандартов WebStart и JNLP (JSR-56) с открытым исходным кодом.

[...]

В IcedTeaWeb в настоящее время мы работаем над отображением JNLP spe c и поддерживаем его функции в максимально возможной степени. В дополнение к OpenWebStart, который использует IcedTeaWeb в качестве своего ядра, IcedTeaWeb также используется в AdoptOpenJDK для обеспечения минимального WebStart в Java 8 выпусках AdoptOpenJDK. Однако они ограничены по сравнению с OpenWebStart, поскольку они могут использовать только текущую JVM для запуска приложений на основе JNLP.

Избавиться от Java Web Start с помощью установки службы Jenkins из командной строки

При установке службы Jenkins из командной строки с использованием jenkins-slave.exe (он же winsw-*.exe) Java Web Start больше не требуется. Кажется, что протокол JNLP по-прежнему используется за кулисами, поэтому в будущем он все еще может иметь проблемы с устареванием.

Шаги (при условии, что вы уже настроили узел в мастере Jenkins):

  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. Отрегулируйте "Дженкинс-раб. xml" в соответствии с вашей средой. Обязательно настройте все строки с префиксом «Your», а также путь к «java .exe». Вы найдете секретную строку и правильный jnlpUrl на странице конфигурации узла мастера Jenkins (например, http://YourJenkinsServer:8080/computer/YourNodeName/).
    Официальная документация
  5. Создайте файл "jenkins-slave.exe.conf", чтобы запретить запуск исполняемого файла на более ранней версии. NET Framework.

    <configuration>
      <startup>
        <supportedRuntime version="v4.0"/>
      </startup>
    </configuration>
    
  6. Запустите «cmd.exe» от имени администратора и перейдите в каталог «jenkins-slave.exe».

  7. Установите службу:
    jenkins-slave.exe install
  8. Запуск услуги:
    sc start YourJenkinsSlaveServiceId
...