Как заставить Дженкинса запускать сборку для зависимых проектов, когда создается зависимость

У меня есть простой вопрос о том, как настроить Jenkins и maven 3.

для простоты скажем, что у нас есть четыре проекта:

модель, который не имеет зависимостей
Коммонс который зависит от модели
сервер что зависит от общего и модели
Frontend который зависит от модели

чего я хочу достичь, так это успеха на основе модели запускает новую сборку на всех проектах, которая в своем pom имеет зависимость от модели (здесь Common, Server и Frontend)

Если Common терпит неудачу, то нет необходимости создавать сервер.

в приведенном выше случае кажется, что я могу исправить это, вручную настроив зависимые проекты на Model и Commons, Но эта информация уже может быть найдена в файлах pom для каждого проекта (сервер и интерфейс), что заставляет меня заключить/пожелать, чтобы Дженкинс мог понять это личность.

может ли Дженкинс вывести дерево зависимостей, проанализировав pom для каждого проекта, определенного в Дженкинсе, и сделать какой-то оптимальный порядок сборки / обработку зависимостей автоматически или мне нужно настроить "блочную сборку, когда строится восходящий проект" и "сборка после построения других проектов [список зависимых проектов]", как описано выше ?

Я использую Jenkins версии 1.473 и Maven 3.
Наши Maven project pom не используют Родительский или модуль метка.

/Benjamin

3 ответов


лучшее решение для такой вещи-создать многомодульной сборки что приводит к следующей структуре:

root (pom.xml)
  +--- model (pom.xml)
  +--- commons (pom.xml)
  +--- server (pom.xml)
  +--- frontend (pom.xml)

в каждом модуле, например, в commons вы определяете зависимость от модуля модели и т. д. Порядок сборки будет автоматически выполнен maven.

С таким проектом вы можете просто перейти к корню и сделать:

mvn clean package

вы также можете использовать:

mvn --pl --am server

что будет строить сервер, но и все в зависимости от модулей автоматически.


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

"построить, когда зависимость моментального снимка построена"

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

задания jenkins должны быть созданы как задания maven, чтобы этот параметр присутствовал. Он неприменим к проектам свободного стиля, даже если они запускают скрипт, который вызывает maven.


два решения.

  1. создайте модуль pom над другими проектами, которые только объявляют порядок сборки (модель, общее, сервер и интерфейс). И просто установите этот проект в Jenkins

  2. в каждом задании есть флажок для активации в форме "что запускает сборку" -- > сборка После проектов. (Имя опции, вероятно, не совсем то, что я написал, так как мой Дженкинс настроен на французском языке...)