Всегда собираете библиотеку перед применением в Jenkins? - PullRequest
5 голосов
/ 23 ноября 2011

У нас есть две сборки A и B , где A - это приложение, которое зависит от библиотеки B .Оба проекта Qt.Дженкинс опрашивает СКМ каждые 15 минут.Иногда случается, что я фиксирую A и B , но таймер A заканчивается раньше, чем таймер B .Таким образом, приложение получает сборку со старой библиотекой, что приводит к сбою сборки.Сейчас я ищу способ сообщить Дженкинсу, что B должен быть собран до того, как начнется сборка A .Однако, можно построить что-то только после успешной сборки.

Есть ли простое решение или мы только испортили наш процесс сборки?

Ответы [ 4 ]

2 голосов
/ 28 ноября 2011

Если вы переключитесь на Apache Ivy для управления зависимостями, вы можете запустить A всякий раз, когда публикуете новую версию B (используя Jenkins Ivy Plugin ), предполагая, чтоA зависит от latest.integration (или аналогичной) версии B.

Это не остановит A от построения против старой версии B, но, по крайней мере, будет автоматически построено снова, когда B будет завершено.

Кроме того, рассмотрите настройки до после получения хуков до запуска Дженкинса и добавления тихого периода к A. Затем, когда вы нажимаете изменения наA и B, и A, и B будут активированы сразу, но A немного подождет, прежде чем строить.Когда тихий период A истекает, можно использовать опцию Block build when upstream project is building, чтобы заставить его ждать, пока не завершится B.

Наконец, когда вы некоторое время используете Ivy, вы, вероятно, придете ктакой же вывод, как и у многих других: вам не нужен A в зависимости от latest.integration от B, а конкретная версия.Он допускает детерминированные сборки и упрощает настройку задания CI (сборка A только тогда, когда изменяется ее код (который включает версию B, от которой он зависит)), но вам нужно прийти к этой реализации самостоятельно, в свое время.

Кстати, несмотря на то, что Ivy очень ориентирован на Java, я очень успешно использую его в не-Java проектах;не откладывай на потом.

2 голосов
/ 24 ноября 2011

В Jenkins есть несколько открытых ошибок, связанных с ссылками на проекты и неправильным порядком сборки.Смотрите эту ошибку ( или эту ).Смотрите комментарии для возможных обходных путей.

2 голосов
/ 24 ноября 2011

Имеется плагин с параметризованным триггером, который включает меню «Запуск / вызов по другим проектам» в меню «Добавить шаг сборки».

https://stackoverflow.com/q/5701697/366299

0 голосов
/ 23 ноября 2011

Под Расширенные параметры в конфигурации задания A выберите Блокировать сборку, когда ведущий проект создает .И сделать работу А зависит от работы Б.

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