Дженкинс Раб, чтобы подключиться к Дженкинс Мастер, который работает за Apache

Ниже приведены настройки, которые у меня есть:

  1. Мастер Jenkins работает на сервере и, допустим, его доменное имя - jenkins.master.host, т. Е. URL для прямого доступа к мастеру Jenkins: http://jenkins.master.host:8080/

  2. Apache HTTPD работает на другом сервере и, скажем, его доменное имя - jenkins.master.proxy. HTTPD настроен на прослушивание через порт 80 и прокси для мастера jenkins, т.е. для доступа к мастеру Jenkins через apache, используется URL http://jenkins.master.proxy/.

  3. В разделе "Управление Jenkins" -> "Настройка системы" URL-адрес Jenkins настраивается как URL-адрес apache httpd, т.е. http://jenkins.master.proxy/

  4. В разделе "Управление Jenkins" -> "Настройка глобальной безопасности" подчиненные устройства настроены для работы на фиксированном TCP-порту 9020.

  5. В разделе "Управление Jenkins" -> "Управление узлами" я создаю новый узел с именем "TestSlave".

  6. После загрузки 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.

Другие вопросы по тегам