Как настроить 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 here]()
![enter image description here]()
Интересно, сделал ли я что-то неправильно? Документ отсутствует?
Ответы
Ответ 1
В последний раз, когда я редактировал этот ответ (2019-09-20), самый быстрый и надежный способ установки Jenkins Worker/Slave в качестве службы - это использование конечной точки "/slave-agent.jnlp" чтобы загрузить файл jnlp, запустите его, а затем выберите "Файл" => "Установить как службу" из его графического интерфейса.
Не беспокойтесь об изменении реестра, встроенная установка делает процесс быстрым, простым и повторяемым.
Допустим, вы настроили узел с именем "amberboch". На машине работника/раба (т.е. "амбербох"):
![]()
- Откройте браузер и введите URL-адрес Jenkins для нового узла (или щелкните узел на странице "Узлы" в Jenkins) и создайте узел в Jenkins, как обычно.
- Как только узел будет создан, перейдите к узлу (Jenkins> Nodes> amberboch) и включите "/slave-agent.jnlp" в конце URL-адреса браузера (например,
"http://jenkins:8080/computer/computer/amberboch/slave-agent.jnlp")
скачать файл jnlp.
![Save the file]()
- Запустите файл slave-agent.jnlp с правами администратора. (Вы можете указать Java/javaws, чтобы запустить его с помощью "Java (TM) Web Start Launcher")
- Выберите параметр "Файл" => "Установить как службу" в графическом интерфейсе slave-agent.jnlp
После установки службы измените учетные данные службы для входа в систему, необходимые для конкретной установки. Возможно, вам придется сбросить разрешения или удалить каталоги в рабочем пространстве, если во время работы в режиме администратора произошло задание, в результате которого была создана подпапка рабочего пространства (поскольку все запущенные задания выполнялись бы так же, как бывший пользователь с правами администратора и обычный профиль пользователя Jenkins, возможно, не имеет надлежащих разрешений для старых папок и файлов рабочей области.
Я надеюсь, что это поможет вам сэкономить время и головные боли в управлении (imho) лучшим вариантом CI, с которым я столкнулся. С уважением.
Ответ 2
Служба может потребоваться начать явно после запуска системы. Вам может потребоваться:
- перейдите на вкладку "войти в систему" и запустите службу как пользователь с правами администратора на компьютере.
или
- Запустите агент 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.