Конвейер Jenkins. Можно Ли Использовать Jenkinsfile В Одном Репозитории Для Создания И Развертывания Связанного Репо?

  • Автор темы Monicaog
  • Обновлено
  • 19, Oct 2024
  • #1

У нашей команды есть два отдельных репозитория для фронтенд-бэкэнд-системы. Они хотели бы, чтобы эти два репозитория были развернуты в общей рабочей среде вместе.

Насколько я понимаю JenkinsFile, он будет работать только с тем репозиторием, к которому он привязан, и запускаться только тогда, когда система SCM отправляет Дженкинсу запрос, информирующий его о новых изменениях.

Возможно ли, чтобы JenkinsFile в двух отдельных репозиториях взаимодействовал друг с другом, чтобы при построении одного также создавалось и другое, и только после того, как оба будут построены, они будут развернуты?

Моя главная цель здесь — избежать создания отдельного задания Jenkins в пользовательском интерфейсе Jenkins.

#jenkins-pipeline

Monicaog


Рег
11 Jul, 2014

Тем
68

Постов
192

Баллов
612
  • 25, Oct 2024
  • #2

Да, с Jenkinsfiles это довольно просто, без необходимости использования каких-либо сторонних плагинов или чего-либо в этом роде: используйте встроенный этап построения конвейера.

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

Вот как это выглядит в файле Jenkins:

 
 
 build 

где build( jobName, wait: false, parameters: [ [ $class: 'BooleanParameterValue', name: 'someBooleanParameter', value: true, ], [ $class: 'StringParameterValue', name: 'someStringParameter', value: 'some string value', ], ], ) is a variable containing the name of the repository you wish to build.

Все может стать немного сложнее, например, если вы используете папки или многоветвевые конвейеры:

master

В этом примере создается задание в проекте Multibranch, где переменные:

  • branchName - the name of my Multibranch project
  • repoName - the name of the repository
  • projectName - the name of the branch to build, usually build "${projectName}/${repoName}/${branchName}"

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

repoName

Как видите, вызов build repoName can get relatively complex. See the documentation linked above for more complete information.

 

Blood68


Рег
16 Jan, 2006

Тем
93

Постов
226

Баллов
701
  • 25, Oct 2024
  • #3

Для этого вы можете использовать Seed Jobs. Начальные задания (которые на самом деле являются произвольными заданиями) включены в плагин Job-DSL.

 

Roakehiebybib95


Рег
24 Oct, 2020

Тем
83

Постов
202

Баллов
637
Похожие темы Дата
Похожие темы
Ошибка Демона Docker При Присоединении К Узлу Swarm — Не Удалось Найти Локальный Ip-Адрес — Неизвестный Порт
Сборка Конвейера — Сборщик Модулей Только Для Внешнего Интерфейса
Непрерывная Интеграция — Инструменты, Используемые На Уровне Предприятия Для Переноса Артефактов Сборки С Сервера Ci На Работающий Сервер.
Соль — Передать Переменную В Скрипт Конвейера
Linux — Github Actions Runner Выполняет Команды С Помощью Sudo Github Actions
Terraform — Ошибка При Создании Нового Ресурса С Использованием Бэкэнда Aws S3
В Чем Разница Между Использованием Скобок (`[` `]`) И Простым Указанием Команды В Опции Cmd В Dockerfiles?
Kubernetes — Что «Eksctl Create Iamserviceaccount» Делает Под Капотом В Кластере Eks?
Google Compute Engine — Используйте Terraform Для Управления Ssh-Ключами В Gce
Ведение Журнала. Как Мне Точно Узнать, Когда В Последний Раз Использовался Токен Личного Доступа Github?
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно