Рабочее пространство Дженкинса на главном или рабочем? - PullRequest
2 голосов
/ 24 января 2020

Кто выполняет фактическое клонирование проекта, мастер или узел агента? Если это мастер, то как узел агента фактически выполняет задание. Если это узел агента, как мы можем просмотреть рабочее пространство в браузере?

Когда люди спрашивают «где находится рабочее пространство», ответ обычно - путь, но меня больше интересует, где этот путь, на главном или агентском узле? Или может быть оба?

Edit1

Согласованная терминология с этим: https://jenkins.io/doc/book/glossary/ во избежание путаницы.

В настройках Jenkins все машины считаются узлами. Главный узел подключается к одному или нескольким узлам агента. Исполнители могут работать как на главном, так и на агентском узлах.

В моем сценарии никакие исполнители не работают на главном. Они запускаются только на узлах агента.

Ответы [ 2 ]

2 голосов
/ 24 января 2020

Ответ: это зависит!

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

Если вы настроили ведущее пространство, чтобы оно не принимало задания, все еще есть случаи, когда на главном устройстве может быть создано рабочее пространство. Хорошим примером является то, что ваша работа - это «конвейерный скрипт из SCM». В этом случае мастер создаст рабочее пространство для задания, клонирует целевой репозиторий, прочитает конвейер и запустит необходимые задания на любом подчиненном устройстве, создав рабочую область для запуска самих действий. Если конвейер нацелен на несколько ведомых устройств, на каждом из них будет рабочее пространство.

В простой ситуации (например, задание maven или freestyle) рабочее пространство будет только на целевом ведомом устройстве.

0 голосов
/ 26 января 2020

Мне нужно было покопаться немного глубже, чтобы понять это.

  1. Я запустил совершенно новый экземпляр Jenkins и подключил один узел агента. Я использовал S SH и установил каталог remote (agent) root в: / home / igorski / jenkins
  2. Как только я подключил узел к папке удаленного доступа и remoting.jar обнаружилось в этом каталоге root.
  3. Я запустил базовое конвейерное задание c Gradle Java (Jenkinsfile в проекте).
  4. Рабочее пространство обнаружилось на ведомом устройстве. Не на мастере.
  5. Из Jenkins GUI Я могу получить доступ к рабочему пространству и увидеть его содержимое.
  6. В настоящий момент я убиваю машину агента, и больше не могу просматривать рабочую область в Jenkins.

Мне кажется, что remoting.jar каким-то образом выполняет живую синхронизацию c.

Я также руководил проектом по фристайлу и могу подтвердить то же самое. Как только агент убит, я больше не могу открыть рабочую область и получаю трассировку стека ошибок:

 hudson.remoting.Channel$CallSiteStackTrace: Remote call to JenkoOne

Это было намного более очевидно с заданием конвейера. Там вы получите ссылку на агента, который вам нужно нажать, чтобы увидеть содержимое. Как только агент исчезнет, ​​ссылка будет отключена. И вы точно знаете, на каком агенте находится узел. С работой по фристайлу вы просто получаете ссылку на Workspace. Нет никаких указаний на то, что это за агент или доступен ли он в данный момент.

Итак, оба Zeitounator и fabian были правильными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...