Гудзоновские зависимости - PullRequest
2 голосов
/ 13 декабря 2010

Я настроил свою работу Hudson A. Работа A зависит от работы B и C. Я настроил их с помощью «Построить другие проекты».Это хорошо работает, хотя каждое задание находится в отдельном каталоге в моей рабочей области (структура по умолчанию).Но мне нужны задания B и C в рабочих местах A (корневая папка).

Я рассмотрел два подхода:

  1. Измените рабочее пространство для задания A и передайте эту переменную в задание через«Запустите параметризованную сборку в других проектах», а затем используйте сценарий ant build, чтобы скопировать их в это место, поскольку я не смог найти вариант, чтобы изменить папку, в которую должно идти задание B или C
  2. Запустить задание B и затем Cиз сценария сборки как часть задания A. Это делается с помощью удаленных вызовов (обнаружил его где-то в stackoverflow), но эта опция отсутствует в моей конфигурации, и я не смог найти плагин, который бы добавил его.

Для меня идеальным подходом было бы использовать скрипт сборки муравья и запускать задания B и C оттуда с помощью antsvn или чего-то в этом роде.Но я не могу найти надежный пример этого.

Причина, по которой я так хочу, проста: задание B - это CMS, которое важно для задания A, а задание C содержит скрипты на python, которые необходимо выполнить перед новой версией.может приземлиться на производственном сервере (это уже сделано с py-ant).

Или, может быть, есть более эффективный способ управления такими зависимостями, как этот.Любая помощь приветствуется.

Надеюсь, это имеет смысл.

1 Ответ

4 голосов
/ 13 декабря 2010

Думайте о заданиях "B" и "C" как о создании "артефактов", необходимых для задания "A".Затем все, что вам нужно сделать, это импортировать артефакты, создаваемые заданиями «B» и «C», каждый раз, когда вы создаете задание «A».

Ваши задания не должны совместно использовать рабочие пространства.В противном случае, что произойдет, если задание «А» будет построено при запуске задания «В» или «С»?У вас будет несколько сборок одновременно.Однако, если вы отделите то, что нужно «A», от заданий «B» и «C», у вас может быть задание «A», чтобы импортировать эти зависимости.Есть два способа сделать это:

  • жесткий, но правильный способ : вам нужно создать репозиторий релизов , где задания могутполучить артефакты, в которых они нуждаются.Если это звучит Mavinish для вас, ну, это так.Тем не менее, я использовал архитектурный материал Maven без проектов Maven, и он отлично работает.Вы можете использовать что-то вроде Artifactory или Nexus в качестве своего релиз-репозитория.Затем используйте wget или curl, чтобы получить элементы из хранилища, и используйте плагин Maven deploy:deploy-file, чтобы переслать материал.Вам понадобится Maven (который является процессом Java) для запуска deploy:deploy-file, но вам не нужен проект Maven или даже проект Java.Для плагина deploy:deploy-file даже не требуется файл Maven pom.xml.Думайте об этом больше как об утилите командной строки для отправки содержимого в ваш репозиторий релизов.
  • Простой, но неверный способ : у Хадсона есть артефакты копированияплагин , который вы можете использовать для этого.Проблема в том, что его легко настроить, но сложно начать отслеживать.Кроме того, это делает вас зависимым от очень специфического инструмента.Если вы решите отойти от Гудзона, вы не сможете скопировать эту функцию.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...