Как настроить Jenkins Slave для запуска в качестве службы Windows с помощью командной строки?

Я хочу создать подчиненное устройство jenkins с помощью командной строки. Это документ о настройке slav-jenkins как службы Windows, и я следил за инструкцией там. Я могу запустить javaws http://10.121.33.4:8080/computer/Test-Jenkins-Slave-2/slave-agent.jnlp для подключения подчиненного устройства к мастеру, но проблема в том, что он отключится после перезагрузки машины.

Я думаю, что лучший способ сделать это - установить slave как услугу. Итак, я попытался снова выполнить инструкцию на этой странице. У меня есть Jenkins Slave, установленный как служба, и раздел реестра добавлен, как показано ниже.

Свойство службы:
enter image description here

Значения реестра:
enter image description hereenter image description here

Интересно, сделал ли я что-то неправильно? Документ отсутствует?

Ответ 1

В последний раз, когда я редактировал этот ответ (2019-09-20), самый быстрый и надежный способ установки Jenkins Worker/Slave в качестве службы - это использование конечной точки "/slave-agent.jnlp" чтобы загрузить файл jnlp, запустите его, а затем выберите "Файл" => "Установить как службу" из его графического интерфейса.

Не беспокойтесь об изменении реестра, встроенная установка делает процесс быстрым, простым и повторяемым.

Допустим, вы настроили узел с именем "amberboch". На машине работника/раба (т.е. "амбербох"):

  1. Откройте браузер и введите URL-адрес Jenkins для нового узла (или щелкните узел на странице "Узлы" в Jenkins) и создайте узел в Jenkins, как обычно.
  2. Как только узел будет создан, перейдите к узлу (Jenkins> Nodes> amberboch) и включите "/slave-agent.jnlp" в конце URL-адреса браузера (например, "http://jenkins:8080/computer/computer/amberboch/slave-agent.jnlp") скачать файл jnlp. Notice "slave-agent.jnlp" is added manually Save the file
  3. Запустите файл slave-agent.jnlp с правами администратора. (Вы можете указать Java/javaws, чтобы запустить его с помощью "Java (TM) Web Start Launcher")
  4. Выберите параметр "Файл" => "Установить как службу" в графическом интерфейсе slave-agent.jnlp

После установки службы измените учетные данные службы для входа в систему, необходимые для конкретной установки. Возможно, вам придется сбросить разрешения или удалить каталоги в рабочем пространстве, если во время работы в режиме администратора произошло задание, в результате которого была создана подпапка рабочего пространства (поскольку все запущенные задания выполнялись бы так же, как бывший пользователь с правами администратора и обычный профиль пользователя Jenkins, возможно, не имеет надлежащих разрешений для старых папок и файлов рабочей области.

Я надеюсь, что это поможет вам сэкономить время и головные боли в управлении (imho) лучшим вариантом CI, с которым я столкнулся. С уважением.

Ответ 2

Служба

может потребоваться начать явно после запуска системы. Вам может потребоваться:

  • перейдите на вкладку "войти в систему" ​​и запустите службу как пользователь с правами администратора на компьютере.

или

  1. Запустите агент jenkins через планировщик окон с помощью инструкций здесь: https://wiki.jenkins-ci.org/display/JENKINS/Launch+Java+Web+Start+slave+agent+via+Windows+Scheduler

Ответ 3

Я взял

  • jenkins.exe
  • jenkins.exe.config
  • jenkins.xml

от установки мастера Дженкинса. Затем я адаптировал XML, чтобы он содержал параметры запуска моего ведомого. Это дает что-то вроде:

<executable>%JAVA_HOME%\bin\java.exe</executable>
  <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "C:\Tools\jenkins_slave\slave_95\agent.jar" -jnlpUrl http://jenkins_master:9090/computer/slave_95/slave-agent.jnlp -secret 999999999999999999999999999999999999999999 -workDir "C:\jenkins_slaves_workdir"</arguments>

В XML у меня также есть:  - отредактировал поля для id, name, description в моих предпочтениях  - удалил содержимое блока расширений

После этого я могу просто запустить службу Windows, запустив оболочку администратора на ведомом устройстве, используя команду:

sc create <service_name> binpath= "C:\Tools\jenkins_slave\slave_95\Jenkins.exe" start= auto

Что в принципе аналогично запуску мастер-сервиса Jenkins.