У меня есть локальный сервер Jenkins, работающий на одном из моих запасных компьютеров (win10). Обратите внимание, что он не находится за каким-либо сервером и, следовательно, доступен только в моей локальной сети. Я настроил его так, чтобы он выполнял непрерывную выборку из моего удаленного репозитория git, собирал артефакты и архивировал их для успешной сборки. Я хотел бы опубликовать эти архивы в моем конвейере выпуска AzureDevops. Как мне это сделать? (И да, я просмотрел все руководства, но они предполагают, что у меня Jenkins работает на виртуальной машине где-то в облаке).

Пока мне не повезло с обучающими программами в Интернете, так как у меня действительно нет URL-адреса для этого экземпляра Jenkins, поскольку он доступен только в моей локальной сети. Я не могу создать эти артефакты на удаленном сервере Jenkins, поэтому я действительно ограничен использованием этого решения для запуска сборок.

Я хочу, чтобы эти архивы, которые собирает Jenkins, были напрямую доступны в моем конвейере выпуска Azure DevOps при каждой успешной сборке. Спасибо за помощь!

1
Atif Ali 29 Мар 2019 в 05:41

1 ответ

Лучший ответ

Так как никто больше не ответил на это, я собираюсь подробно описать, чем я закончил (возможно, это не лучший из подходов, но он работает для моей установки, предложения приветствуются!).

Для взаимодействия с платформой Azure DevOps с локального компьютера вам потребуется настроить саморазмещаемый агент (на основе вашей конкретной ОС), который позволит запускать сборки, архивировать и выгружать артефакты сборки на платформу Azure DevOps. Таким образом, вам также не нужно опрашивать изменения SCM (что, я думаю, иногда не так элегантно).

1. Поэтому вам нужно будет выполнить настройку, как описано здесь, для локального агента с собственным хостингом:

ПРИМЕЧАНИЕ. Я решил запустить агент как службу в Windows для моей установки.

2. Затем настройте задание сборки Jenkins, как обычно, с обычной настройкой доступа к репо. Следует иметь в виду следующее:

  • В разделе «Триггеры сборки» выберите параметр «Опрос SCM», но убедитесь, что расписание пусто, это обеспечит срабатывание триггера из ловушки после фиксации от агента. Пример настройки показан ниже:

enter image description here

  • В разделе «Действия после сборки» убедитесь, что вы архивируете артефакты по мере необходимости. Пример показан ниже:

enter image description here

3. Пришло время настроить «Подключение службы Jenkins» для вашего проекта. Доступ к нему можно получить на вкладке «Параметры проекта» в левом нижнем углу представления проекта в Azure DevOps. Обратите внимание, что это в основном помогает вам локально размещать агент для поиска и связи с экземпляром Jenkins, работающим локально (или в другом доступном в сети месте!). Перейдите в Pipelines -> Service Connections и откройте новое соединение для Jenkins. Обратите внимание, что хитрость здесь заключается в использовании URL-адреса для подключения, который видит ваш локальный агент, размещенный на собственном хостинге, что означает, что это может быть любой IP-адрес (включая localhost), к которому агент может получить доступ в обычном режиме. Имя пользователя и пароль такие же, как и в Jenkins. Пример показан ниже:

enter image description here

ПРИМЕЧАНИЕ. Вы можете попробовать выполнить «Проверить и сохранить», но это вызовет ошибку, поэтому игнорируйте ошибку или просто продолжайте и «Сохранить без проверки». Также вам придется делать это для каждого проекта, в отличие от настройки агента с собственным хостом, который выполняется для каждой машины.

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

enter image description here

ПРИМЕЧАНИЕ. Ключевым моментом здесь является правильное «Имя задания» (оно должно быть таким же, как то, которое вы установили в экземпляре сервера сборки Jenkins) и правильное «Соединение службы Jenkins».

5. Остальное просто в том смысле, что вам только что нужно убедиться, что у вас есть шаг «Загрузить артефакты» (НЕ требуется, если вы не хотите, чтобы артефакты на платформе DevOps) и «Опубликовать артефакты» (это необходимо для ваш конвейер выпуска, чтобы увидеть этот артефакт сборки и запустить его, если хотите), после шага вашего задания очереди jenkins. Убедитесь, что настроили правильные каталоги заданий для загрузки с локального агента. Пример настройки для обоих шагов:

enter image description here

enter image description here

ПРИМЕЧАНИЕ. Если у вас возникли проблемы с путями для загрузки и публикации, перейдите по этой ссылке для получения предопределенных переменных для локальных агентов: https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure- DevOps & tabs = yaml

6. Теперь в конвейере выпуска вы должны иметь возможность добавлять источники артефактов из конвейера сборки. Пример показан ниже:

enter image description here

Теперь у вас должна быть возможность получать локальные артефакты в облаке на платформе Azure DevOps, если вы по какой-либо причине не можете использовать агенты сборки, предоставленные Microsoft!

1
Atif Ali 12 Дек 2019 в 17:54