Дженкинс Раб, чтобы подключиться к Дженкинс Мастер, который работает за Apache
Ниже приведены настройки, которые у меня есть:
Мастер Jenkins работает на сервере и, допустим, его доменное имя - jenkins.master.host, т. Е. URL для прямого доступа к мастеру Jenkins: http://jenkins.master.host:8080/
Apache HTTPD работает на другом сервере и, скажем, его доменное имя - jenkins.master.proxy. HTTPD настроен на прослушивание через порт 80 и прокси для мастера jenkins, т.е. для доступа к мастеру Jenkins через apache, используется URL http://jenkins.master.proxy/.
В разделе "Управление Jenkins" -> "Настройка системы" URL-адрес Jenkins настраивается как URL-адрес apache httpd, т.е. http://jenkins.master.proxy/
В разделе "Управление Jenkins" -> "Настройка глобальной безопасности" подчиненные устройства настроены для работы на фиксированном TCP-порту 9020.
В разделе "Управление Jenkins" -> "Управление узлами" я создаю новый узел с именем "TestSlave".
После загрузки JNLP для запуска ведомого, окно маленького ведомого агента, которое подключается к ведущему, остается на "Соединение с jenkins.master.proxy:9020"
JNLP выглядит следующим образом:
<jnlp codebase="http://jenkins.master.proxy/computer/TestSlave/" spec="1.0+">
<information>
<title>Agent for TestSlave</title>
<vendor>Jenkins project</vendor>
<homepage href="https://jenkins-ci.org/"/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.7+"/>
<jar href="http://jenkins.master.proxy/jnlpJars/remoting.jar"/>
<property name="hudson.showWindowsServiceInstallLink" value="true"/>
</resources>
<application-desc main-class="hudson.remoting.jnlp.Main">
<argument>*******************************************</argument>
<argument>TestSlave</argument>
<argument>-url</argument>
<argument>http://jenkins.master.proxy/</argument>
</application-desc>
</jnlp>
Apache HTTPD настроен следующим образом:
<VirtualHost *:80>
ServerName jenkins.master.proxy
ProxyPass / http://jenkins.master.host:8080/ nocanon Keepalive=On
ProxyPassReverse / http://jenkins.master.host:8080/
AllowEncodedSlashes On
ErrorLog logs/jenkins/error.log
</VirtualHost>
Есть ли какая-то конфигурация, которую мне нужно поместить в master-устройство Jenkins или в apache HTTPD, чтобы подключить подчиненное устройство? Маленькое окно подчиненного агента Jenkins остается застрявшим на "Соединение с jenkins.master.proxy:9020 (повтор:11)". Возможно, мне нужно добавить еще один VirtualHost в Apache HTTPD для прослушивания на порт 9020? Я пытался сделать это, но безуспешно.
Идеи будут высоко оценены.
Большое спасибо
1 ответ
Посмотрите этот пост: Jenkins: Как настроить Jenkins для обратного прокси-сервера Nginx для подключения подчиненных JNLP
Я решил эту проблему, установив системное свойство hudson.TcpSlaveAgentListener.hostName равным jenkins.master.host в моей конфигурации Jetty.