Как мастер Дженкинс инструктирует подчиненный загрузить исходный код из TFS

DevOps настроил подчиненную машину Windows как машину сборки для нашей команды, и я заметил, что он установил плагин TFS в мастер Jenkins, но не в подчиненную машину. Однако впоследствии мы получаем исходный код в ведомом устройстве. Интересно, как работает процесс загрузки?:

  • 1) Мастер загружает исходный код, а затем передает код на ведомый компьютер?
  • 2) или после того, как Master подключится к TFS-серверу, он просто скажет подчиненному компьютеру загрузить его непосредственно с TFS-сервера?

Пожалуйста, объясните немного механизм. Если это 2), то что установлено в slave для возможности загрузки из TFS.

2 ответа

Чтобы установить связь между Jenkins и TFS, необходимо установить подключаемый модуль Team Foundation Server и настроить его, как указано в этой статье. Таким образом, Дженкинс может получать ресурсы из TFS.

Каждый ведомый запускает отдельную программу, называемую "ведомым агентом", ведомому агенту и мастеру Jenkins необходимо установить двунаправленный канал связи. Чтобы настроить подчиненные / узлы в Jenkins, вы можете обратиться к этой статье. Если все настройки введены правильно, подчиненный узел будет подключен к сети и свяжется с мастером Jenkins.

Плагины VCS обычно работают следующим образом:

  1. Мастер настроен на использование некоторых VCS и подготовлен с некоторыми настройками
  2. У ведомого есть несколько двоичных файлов, которые могут выполнить команду загрузки

После запуска сборки большинство шагов будут выполняться на ведомом устройстве через его двоичные файлы, включая загрузку исходного кода. Это требует, чтобы подчиненный имел бинарный VCS (например, git) и доступ к целевому хранилищу (для git это может быть ключ ssh).

У меня сейчас нет раба с TFS, но процесс такой же. Я полагаю, если вы проверите Console output из сборки, вы увидите полный путь к бинарному файлу, используемому для загрузки TFS, где-то в самом верху.

Вот пример такого вывода для git:

Building remotely on slave01 in workspace /jenkins-workspace
> /bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> /bin/git config remote.origin.url git@github.com:ORG/repo.git # timeout=10
Другие вопросы по тегам